二叉树
由 n ( n ≥ 0 ) n(n\ge 0) n(n≥0) 个结点组成的有限集,每一个根结点最多有两棵互不相交的子树,这样的树称为二叉树。
当 n = 0 n = 0 n=0 时称为空树;二叉树中有且只有一个称为根的结点。
除根结点以外的其余结点分为两个互不相交的子集 T 1 T1 T1 和 T 2 T2 T2, T 1 T1 T1 称为根的左子树, T 2 T2 T2 称为根的右子树, T 1 T1 T1 和 T 2 T2 T2 又可以看作二叉树。
二叉树的特点:结点的子树有左右之分,其次序不能颠倒;二叉树的度不超过 2。二叉树可以是空集,根也可以有空的左子树或空的右子树。
二叉树不是树的特殊情况:二叉树每个结点最多有两棵子树,而树结点的子树可以有无数棵;二叉树结点的子树要区分左子树或右子树,次序不能任意颠倒;树结点只有一个孩子时,没有左右次序之分。
二叉树的性质:
- 在二叉树的第i层上最多有 2 i − 1 2^{i-1} 2i−1 个结点,最少有 1 个结点。
- 深度为 k k k 的二叉树最多有 2 i − 1 2^i-1 2i−1 个结点( k ≥ 1 k\ge 1 k≥1 )。
- 对任何一棵二叉树 T T T,如果其叶子数为 n 0 n_0 n0,度为 2 的结点数为 n 2 n_2 n2 个,则 n 0 = n 2 + 1 n_0 = n_2 + 1 n0=n2+1。
证明如下:
- 二叉树结点总数: n = n 0 + n 1 + n 2 n = n_0 + n_1 + n_2 n=n0+n1+n2;
- 除了根结点外,其余结点都有一个分支进入,设 B B B 为分支总数,则 n = B + 1 n = B + 1 n=B+1;
- 由于树的分支是由度为 1 或 2 的结点射出,所以 B = n 1 + 2 ∗ n 2 B = n_1 + 2 * n_2 B=n1+2∗n2
- 综上所述: n = n 1 + 2 ∗ n 2 + 1 ⇒ n 0 = n 2 + 1 {n = n_1 + 2 * n_2 + 1} \Rightarrow n_0 = n_2&#