概念与定义:
- 树的层数:
- 树根为第一层,其孩子为第二层,孙子为第三层。
- 树的深度:
- 树中结点的最大层数称为树的深度。
- 满足以下两个条件的树称为二叉树(Binary Tree)
- 每个结点的度都不大于2(度即为孩子数)
- 每个结点的孩子结点次序不能随意颠倒
- 满二叉树:
- 每一层都是满的,即第i层有 2i−1 个结点,则是满二叉树
- 若除最下面一层结点度数0外,其余结点度数均为2
完全二叉树:
- 如果一个二叉树各层都是“满”的,只是最下面一层从右边起连续缺n个结点,这种二叉树叫做完全二叉树。
Note:二叉树是有序树,因此不是所有满足结点度数不大于2的树都是二叉树。
有用结论:
- 树的结点数n和分枝数b的关系为:b=n-1
- 二叉树第i层上至多有 2i−1 个结点
- 深度为k的二叉树上至多含
2k−1
个结点
( 20+21+22+...+2k−1=2k−1 ) - 对任何一棵二叉树,若它含有
n0
个叶子结点,
n2
个度数为2的结点,则必存在关系式:
n0=n2+1
证明:
设 二叉树上结点总数: n=n0+n1+n2
再根据树的性质: b=n−1=n0+n1+n2−1
由有二叉树分支总数: b=n1+2n2
两式右边相等得: n0=n2+1 - 层数为k的完全二叉树的结点数量n满足关系:
2k−1−1≤n≤2k−1
即n值大于深度为h-1的满二叉树的结点数,但小于或等于深度为h的满二叉树的结点数。 - 若按层编号,
对于完全二叉树中任一个编号为i的结点(1≤i≤n),它的父结点和左、右儿子结点的编号与i值有如下的关系:
1) 如果i=1,则它是整个树的根结点,无父结点;若i>1,则其父结点编号为 ⌊i/2⌋ 。
2) 如果2i≤n,则其左儿子结点编号为2i;若2i>n,则无左儿子结点。
3) 如果(2i+1)≤n,则其右儿子结点编号为(2i+1);反之,则无右儿子结点。 - 具有n个结点的完全二叉树深度为:
k=⌊log2n⌋+1
证明: 设完全二叉树的深度为 k
则根据性质2得 2k-1 -1 < n ≤ 2k -1
则 2k-1 ≤ n < 2k
即 k-1 ≤ log2 n < k
k 只能是整数,因此: k=⌊log2n⌋+1