首页/数据结构/04-tree/二叉树的性质证明 🔗 在 Obsidian 中打开
数据结构 · 树与二叉树

二叉树的性质证明

难度 ★★重要度 ★★ 考查频率 低 二叉树证明性质
速查
边数法证明 $n_0 = n_2 + 1$;用满二叉树推导深度公式;对完全二叉树利用 $n_1\in\{0,1\}$ 拆分求 $n_0,n_1,n_2$。

证明 $n_0 = n_2 + 1$

设二叉树总节点数为 $n$,度为 0、1、2 的结点分别为 $n_0,n_1,n_2$。

① 节点数关系:$n = n_0 + n_1 + n_2$。

② 边数关系:除根外每个结点恰有一条父边,故边数 $e = n - 1$;另一方面每条边来自一个非叶子结点的“出度”,故 $e = n_1 + 2n_2$。

联立:$n_0 + n_1 + n_2 - 1 = n_1 + 2n_2 \;\Rightarrow\; n_0 - 1 = n_2 \;\Rightarrow\;$ $n_0 = n_2 + 1$

关键“边数 = 总节点数 − 1”是证明的核心桥梁。

深度公式推导

第 $i$ 层最多 $2^{i-1}$ 个结点,故深度为 $k$ 的二叉树最多结点数为等比数列求和:

$$n_{\max} = \sum_{i=1}^{k} 2^{i-1} = 2^k - 1$$

反之,若某二叉树有 $n$ 个结点,则深度 $k$ 满足 $2^{k-1} \le n < 2^k$,故 $k \ge \lfloor\log_2 n\rfloor + 1$。完全二叉树取等号。

完全二叉树结点计算

以 $n=100$ 为例:

  • $n_0 = \lceil 100/2\rceil = 50$(叶子);
  • 因 $n=100$ 为偶数,完全二叉树中 $n_1 = 1$(恰有一个度为 1 的结点);
  • $n_2 = n_0 - 1 = 49$;
  • 校验:$n_0+n_1+n_2 = 50+1+49 = 100$ ✓。
拆分法完全二叉树 $n_1\in\{0,1\}$:奇数个结点时 $n_1=0$,偶数个时 $n_1=1$。再用 $n_0=n_2+1$ 与 $n=n_0+n_1+n_2$ 解出。

常见考法

题型① 给出 $n_0$ 或 $n_2$ 求另一个并用边数法证明;② 推导深度上下界;③ 完全二叉树已知 $n$ 求各度结点数的拆分。

易错点

必记
  1. 证明 $n_0=n_2+1$ 用边数法,不要靠举例。
  2. 深度公式是 $\lfloor\log_2 n\rfloor+1$,别漏 +1。
  3. 完全二叉树 $n_1$ 只可能是 0 或 1。

核心结论

结论推导要点
$n_0 = n_2 + 1$边数 $n-1 = n_1+2n_2$
深度 $\ge \lfloor\log_2 n\rfloor+1$满二叉树求和 $2^k-1$
完全二叉树 $n_1\in\{0,1\}$最后一层连续性

记忆卡片

n₀=n₂+1 怎么证?
边数法:n−1 = n₁+2n₂,结合 n=n₀+n₁+n₂。
深度下界公式?
⌊log₂n⌋+1。
完全二叉树 n₁ 可能值?
0 或 1。
n=100 时各度结点?
n₁=1, n₀=50, n₂=49。

交互动画 · 数学归纳法证明「第 i 层 ≤ 2^(i−1)」

A B C D E F G 示例树:第 1 层 1 个、第 2 层 2 个、第 3 层 4 个
命题:二叉树的第 i 层最多有 2^(i−1) 个结点(i ≥ 1)——用数学归纳法证明

相关知识点

binary-tree-traversal complete-binary-tree-properties huffman-tree-and-encoding

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。