要想弄清楚二叉树的性质,我们就要先理解什么是二叉树。
满足以下两个条件的树就是二叉树:
- 本身是有序树;
- 树中包含的各个结点的度不能超过 2,即只能是 0、1 或者 2
接下来我们来看二叉树的性质:
性质1:在二叉树的第 i 层上至多有 个结点(i >= 1)
证明: 因为是 至多 所以我们就画一个最大值,即除了叶子结点,每个结点的度都为2
相信找规律大家都会把,从上图中,不难得出 每层上最多的结点数 与 层数的关系,即
当然这个规律也是和二叉树本身有关的,因为二叉树最多一个结点有2个度,那么在最大值的情况下,每增加一个父结点就会多2个子结点 ,所以除了根节点,其他层的结点都是偶数(即与2的倍数有关)。 最大值都求出来了,那其他情况每层的结点数就一定是 小于等于最大值的.
性质2:深度为k的二叉树至多有 个结点(k>=1)
证明:由性质1可知,深度为k的二叉树的最大结点数为
性质3:对任何一棵二叉树 T,若其终端结点数为 n0 ,度数为 2 的结点数为 n2, 则 n0 = n2 + 1
证明:设 n1 为度为1的结点数, n2 为度为2的结点数, 同理 n0 为度为0的结点数.
求二叉树的结点数的方法有两种:
方法一: 所有结点加起来等于总结点 即 n1 + n2 + n0 = n
方法二: 所有孩子结点加根节点等于总结点: n1 + 2n2 + 1 = n
将二者相减 最后 得出 n0 = n2 + 1
性质4:具有 n 个结点的完全二叉树的深度为 ⌊logn⌋+1
证明:假设二叉树的深度为 k,则根据完全二叉树的定义得知,它的前 k-1 层是深度为 k-1 的满二叉树,共有 个结点。由于二叉树深度为 k,所以第 k 层上还有结点,因此该二叉树的结点数 n > 。 再由性质2可知 n <= 所以得出:
因为对于 完全二叉树而言,最后一层最左边至少有一个结点,所以推出:
三项取对数后得:
因为 k 为整数,所以有:
k = ⌊logn⌋+1