首页 > 代码库 > 二叉树(二)——遍历、深度统计、叶子结点统计、结点统计
二叉树(二)——遍历、深度统计、叶子结点统计、结点统计
1.二叉树的相关算法的实现(链表)。
#include <stdio.h> #include <malloc.h> #define NULL 0 typedef struct tree { int data; struct tree *left, *right; }ElemBT; void create_btree(ElemBT *root, int list[], int n) /*n表示list数组中元素的个数*/ { int i; ElemBT *current, *parent, *p; for(i = 1; i < n; i++) { p = (ElemBT *)malloc(sizeof(ElemBT)); p->left = p->right = NULL; p->data = http://www.mamicode.com/list[i];>程序运行截图:
2.结论
(1)通过一棵二叉树的前序、中序、后序中任意两个的访问顺序可以唯一的确定一棵二叉树。
假设有二叉树的中序和后序访问顺序分别为:
中序:c, b, d, e, a, g, i, h, j, f
后序:c, e, d, b, i, j, h, g, f, a
分析:由后序遍历最末一个是a可以知道a为该树的根,再结合中序可知道c, b, d, e为其左子树,g, i, h, j, f为其右子树。又结合后序访问可以知道b, f分别为为a的左子女和右子女,再结合中序遍历可以知道b的左子女个数为1,右子女个数为2,f的左子女个数为4,右子女个数为0。依次类推可以得到如下的二叉树:
a
/ \
b f
/ \ /
c d g
\ \
e h
/ \
i j
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。