树的概念
树是具有以下性质的有限结点集合:
(1) 有一个被称为“根”的结点。
(2) 根的所有孩子都是一颗子树的根。
树的相关术语
二叉树及定义
二叉树是一类特殊的树.
(1)二叉树中的每个结点至多只有两棵子树,即二叉树中不存在度大于二的结点.
(2)二叉树的由三个基本单元构成:根结点,左子树,右子树.
(3)二叉树的左右子树有次序之分,顺序不能颠倒.
二叉树的基本形态及计数:
二叉树的遍历
问题的提出:
在二叉树的一些应用中,为了在树中查找具有某种特征的结点,或者对树中的全部结点逐一进行处理。这样就提出了一个遍历二叉树的问题,即如何按某条搜索路径寻访树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义很广,可以是对结点进行处理,如输出结点的信息等等。
因此对二叉树而言:可以有三条搜索路径:
(1)先上后下的按层次搜索
(2)先左子树,后右子树的遍历
(3)先右子树,后左子树的遍历
遍历二叉树
二叉树由根、左子树、右子树三部分组成
二叉树的遍历可以分解为:访问根,遍历左子树和遍历右子树
令:
L:遍历左子树 D:访问根结点 R:遍历右子树
有六种遍历方法:
DLR,LDR,LRD, DRL,RDL,RLD
约定先左后右,有三种遍历方法: DLR、LDR、LRD ,分别称为
先序遍历(先根遍历)、中序遍历(中根遍历)、后序遍历(后根遍历)
典型例题:Tree Recovery
DBACEGF ABCDEFG
BCAD CBAD
Sample Output
ACBFGED
CDAB
![](https://i-blog.csdnimg.cn/blog_migrate/5cecffb88b3ec64bbabe655af82332ba.png)
分析:
这个题是个常见题,我们可以在纸上先模拟的画
一下样例,程序实现时可以递归实现.对于树这种
数据结构而言,递归是经常用到的,因为树本身的
结构就是一个递归的概念.
树的存储
所以
例题:
树的深度计数
下面 N-1 行,每行包括两个整数 X, Y ,表示 X 和 Y 这两台计算机之间由一条网线连接。
1 号点为根
•给出N行,分别表示从1号到N号点,每个点的深度为多少
模板题,自己去思考吧