树
树是一种非线性 的数据结构,它是由 n ( n>=0 )个有限结点组成的一个具有层次关系的集合。子树不相交,除根结点外,每个结点有且仅有一个父结点。一颗N个结点的树有N-1条边。
结点的度 |
一个结点含有子树的个数称为该结点的度;A的度为:3
|
树的度 |
一棵树中,所有结点度的最大值称为树的度;树的度为3
|
叶子结点或
终端结点
|
度为
0
的结点称为叶结点;
|
双亲结点或 父结点 |
若一个结点含有子结点,则这个结点称为其子结点的父结点;
|
根结点
|
一棵树中,没有双亲结点的结点;如上图:
A
|
结点的层次 |
从根开始定义起,根为第
1
层,根的子结点为第
2
层,以此类推
|
树的高度或深度
|
树中结点的最大层次;树的高度为3
|
非终端结点或
分支结点
|
度不为
0
的结点;
|
二叉树
一棵二叉树是结点的一个有限集合,该集合:1. 或者为空2. 或者是由 一个根节 点加上两棵别称为 左子树 和 右子树 的二叉树组成。3.有序的。
两种特殊的二叉树
满二叉树
一棵二叉树,如果每层的结点数都达到最大值,则这棵二叉树就是满二叉树。也就是说,如果一棵二叉树的层数为K,且结点总数是 2^k-1,则它就是满二叉树。
完全二叉树
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。 满二叉树是一种特殊的完全二叉树。
从上至下从左至右不为空。
二叉树性质
1. 若规定
根结点的层数为
1
,则一棵
非空二叉树的第
i
层上最多有
2^(i-1)
(i>0)个结点
2. 若规定只有
根结点的二叉树的深度为
1
,则
深度为K的二叉树的最大结点数是
2^k-1
(k>=0)
3. 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数为 n2,则有n0=n2+1
4. 具有
n
个结点的完全二叉树的深度k为
上取整
![](https://img-blog.csdnimg.cn/4cadf2b9548a4ac0832358f30625e841.png)
例:在具有 2n 个结点的完全二叉树中,叶子结点个数为( n)
偶数个节点,度为1的结点有1个,即n1=1;
n0=n2+1 n0+n1+n2=2n
n0+1+n0-1=2n n0=n
二叉树的遍历
NLR
:前序遍历
(Preorder Traversal
亦称先序遍历
)——
访问根结点
--->
根的左子树
--->
根的右子树。
LNR
:中序遍历
(Inorder Traversal)——
根的左子树
--->
根节点
--->
根的右子树。
LRN
:后序遍历
(Postorder Traversal)——
根的左子树
--->
根的右子树
--->
根节点。
![](https://img-blog.csdnimg.cn/3785b7cccd084c739c0eab15dc922925.png)
前序遍历结果:
1 2 3 4 5 6
中序遍历结果:
3 2 1 5 4 6
后序遍历结果:
3 1 5 6 4 1