首页 > 其他 > 详细

二叉树的常见操作

时间:2015-02-04 16:27:55      阅读:271      评论:0      收藏:0      [点我收藏+]

【输出二叉树中的叶子结点】

 无论前序、中序、后序遍历,叶子结点的输出顺序都是一样的吗?都是一样的,输出顺序为:从树的左边到右边叶子!!在二叉树的遍历算法中增加检测结点的“左右子树是否都为空”。

 1 void PreOrderPrintLeaves(BinTree Bt)
 2 {
 3     if(Bt)
 4     {
 5         if(Bt->Left == NULL && Bt->Right == NULL)
 6             printf("%c ", Bt->Data);
 7         PreOrderPrintLeaves(Bt->Left);
 8         PreOrderPrintLeaves(Bt->Right);
 9     }
10 }
11 
12 void InOrderPrintLeaves(BinTree Bt)
13 {
14     if(Bt)
15     {
16         InOrderPrintLeaves(Bt->Left);
17         if(Bt->Left == NULL && Bt->Right == NULL)
18             printf("%c ", Bt->Data);
19         InOrderPrintLeaves(Bt->Right);
20     }
21 }
22 
23 void PostOrderPrintLeaves(BinTree Bt)
24 {
25     if(Bt)
26     {
27         PostOrderPrintLeaves(Bt->Left);
28         PostOrderPrintLeaves(Bt->Right);
29         if(Bt->Left == NULL && Bt->Right == NULL)
30             printf("%c ", Bt->Data);
31     }
32 }

 

【求二叉树的高度】

 技术分享

 

【由两种遍历序列确定二叉树】

 已知三种遍历中的任意两种遍历序列,能否唯一确定一棵二叉树呢?必须要有中序遍历才行!!

1、先序和中序遍历序列来确定一棵二叉树?

  • 根据先序遍历序列第一个结点确定根结点
  • 根据根结点中序遍历序列中分割左右两个子序列
  • 左子树右子树分别递归使用相同的方式继续分解;

2、后序和中序遍历序列来确定一棵二叉树?

  • 根据后序遍历序列最后一个结点确定根结点
  • 根据根结点中序遍历序列中分割左右两个子序列
  • 左子树右子树分别递归使用相同的方式继续分解;

 

二叉树的常见操作

原文:http://www.cnblogs.com/utank/p/4272409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!