码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的常见操作

时间:2015-02-04 16:30:34      阅读:198      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!