树
- 结点的层次:从一棵树的树根开始,树根所在层为第一层,根的孩子结点所在的层为第二层,依次类推
- 一棵树的深度(高度)是树中结点所在的最大的层次
- 叶子结点:如果结点没有任何子结点,那么此结点称为叶子结点(叶结点)
- 对于一个结点,拥有的子树数(结点有多少分支)称为结点的度
二叉树
-
本身是有序树
-
各个节点的度最多为2
-
性质
- 二叉树中,第 i i i 层最多有 2 i − 1 2^{i-1} 2i−1 个结点
-
如果二叉树的深度为 k k k ,那么此二叉树最多有 2 k − 1 2^k-1 2k−1 个结点。
- 二叉树中,终端结点数(叶子结点数)为 n 0 n_0 n0,度为 2 的结点数为 n 2 n_2 n2,则 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1
满二叉树
如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树
- 满二叉树中第 i i i 层的节点数为 2 i − 1 2^i - 1 2i−1 个
- 深度为 k k k 的满二叉树必有 2 k − 1 2^k - 1 2k−1 个节点 ,叶子数为 2 k − 1 2^{k-1} 2k−1
- 满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层
- 具有 n n n 个节点的满二叉树的深度为 l o g 2 ( n + 1 ) log_2(n+1) log2(n+1)
完全二叉树
如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为***完全二叉树***
完全二叉树除了具有普通二叉树的性质,它自身也具有一些独特的性质,比如说,$n $个结点的完全二叉树的深度为 ⌊ l o g 2 n ⌋ + 1 ⌊log_2n⌋+1 ⌊log2n⌋+1
$⌊log_2n⌋ $表示取小于 $log_2n $ 的最大整数。例如, ⌊ l o g 2 4 ⌋ = 2 ⌊log_24⌋ = 2 ⌊log24⌋=2,而 ⌊ l o g 2 5 ⌋ ⌊log_25⌋ ⌊log25⌋ 结果也是 2
对于任意一个完全二叉树来说,如果将含有的结点按照层次从左到右依次标号(如图 3a)),对于任意一个结点 i i i ,完全二叉树还有以下几个结论成立:
- 当 i > 1 i>1 i>1 时,父亲结点为结点 [ i / 2 ] [i/2] [i/2] 。( i = 1 i=1 i=1 时,表示的是根结点,无父亲结点)
- 如果 2 ∗ i > n 2*i>n 2∗i>n(总结点的个数) ,则结点 i i i 肯定没有左孩子(为叶子结点);否则其左孩子是结点 2 ∗ i 2*i 2∗i 。
- 如果 2 ∗ i + 1 > n 2*i+1>n 2∗i+1>n ,则结点 i i i 肯定没有右孩子;否则右孩子是结点 2 ∗ i + 1 2*i+1 2∗i+1