博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树数据结构和算法
阅读量:4652 次
发布时间:2019-06-09

本文共 2458 字,大约阅读时间需要 8 分钟。

参考:http://blog.csdn.net/dazhong159/article/details/7906916

百度面试题目:        输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。        例如输入整数 22 ,如下图二元树:                                            10                                           /     \                                          5     12                                        /    \                                          4     7    则打印出两条路径:10, 12和10, 5, 7。#include 
#include
#define MAX 20 struct BiTreeNode { int data; struct BiTreeNode *left; struct BiTreeNode *right; }; /*递归创建二叉排序树,以'-1'结束*/ BiTreeNode * CreateBSTree(int *data,int pos,int len) { BiTreeNode * tr; if(pos>=len) { return NULL; } else { tr = (BiTreeNode *)malloc(sizeof(BiTreeNode)); tr->data=data[pos]; tr->left = CreateBSTree(data,2*pos+1,len); tr->right = CreateBSTree(data,2*pos+2,len); return tr; } } //中序遍历二叉树 void InOrderTraverse(BiTreeNode * root) { if(root!=NULL) { InOrderTraverse(root->left); printf("%d ",root->data); InOrderTraverse(root->right); } } //打印路径 void printPath(int path[],int top) { printf("第一组:"); for(int i=0;i
data; sum -= root->data; if (root->left == NULL && root->right==NULL) { if (sum == 0) { printPath(path, top); } } else { if (root->left != NULL) findPath(root->left, sum, top,path); if (root->right!=NULL) findPath(root->right, sum, top,path); } top --; sum += root->data; } int main() { int data[]={
1,2,3,1,2,3,2,1,3,2,1,2,1,2,1}; int len=sizeof(data)/sizeof(int); BiTreeNode * root=CreateBSTree(data,0,len); InOrderTraverse(root); printf("\n"); int sum=6; int top=0; int path[MAX]={
0}; findPath(root,sum,top,path); return 0; }

什么是二叉树?

二叉树是每个节点最多有两个子树的树结构

节点:二叉树中每个点

度:节点子树的个数

叶子节点:度为0的节点

分支节点:度不为0 的节点

中序:是先访问左子树,再访问根,然后访问右子树

前序:是先访问根,再访问左子树,然后访问右子树
后序:是先访问左子树,再访问右子树,然后访问根

完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点

满二叉树:两种说法

1.一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树

2.如果一棵二叉树的结点要么是叶子结点,要么它有两个孩子结点,这样的树就是满二叉树

 

转载于:https://www.cnblogs.com/Deanboy/p/7636882.html

你可能感兴趣的文章
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
反射的所有api
查看>>
css 定位及遮罩层小技巧
查看>>
[2017.02.23] Java8 函数式编程
查看>>
sprintf 和strcpy 的差别
查看>>
JS中window.event事件使用详解
查看>>
ES6深入学习记录(一)class方法相关
查看>>