Appearance
题目
现有一棵无重复关键字的平衡二叉树(AVL 树),对其进行中序遍历可得到一个降序序列。下列关于该平衡二叉树的叙述中,正确的是( )。
错因
A
把"AVL 树平衡因子 |BF|≤1"误读成"每个节点必须有 2 个孩子"。AVL 只要求左右子树高度差 ≤1,完全允许度为 0 或 1:
- 单节点树:根度=0
- 两节点树(根+一个孩子):根度=1
所以"根的度一定为 2"不成立。
B
中序降序意味着这是一棵反向 BST:左子树 > 根 > 右子树。最小元素出现在中序末尾,即最右下角的节点(一直往右走到底)。这个节点没有右子树,但可以有左子树——因为反 BST 中左子树值更大,不影响"最小"的判定。
反例:树为 5(6, _)——只有 2 个节点,根 5,左孩子 6。中序:6, 5(降序 ✓),平衡(高度差 1 ≤ 1 ✓)。最小元素 5 是根,不是叶子(它有左孩子)。所以 B 错。
C
AVL 树插入新元素时,先按 BST 规则把它作为叶子插入;如果造成失衡,会触发旋转。旋转后,新插入的节点未必还是叶子——它可能被旋转上来变成内部节点。
反例:依次插入 3, 1, 2 到(普通)AVL:
- 插 3 →
3 - 插 1 →
3(1, _) - 插 2 →
3(1(_, 2), _),根 3 的 BF = 2,失衡(LR 型),双旋后 →2(1, 3)。
最后插入的是 2,旋转后 2 在根,不是叶子。所以 C 错。
总解析
先把"中序降序"翻译清楚:
- 普通 BST:中序遍历得升序(左子 < 根 < 右子)。
- 本题的 AVL:中序遍历得降序 → 左子 > 根 > 右子(反向 BST)。
平衡条件 |BF|≤1 不变,只是大小关系镜像。
逐项分析:
| 选项 | 反例/分析 | 判定 |
|---|---|---|
| A. 根度一定为 2 | 单节点 / 两节点 AVL 也合法,根度可为 0 或 1 | ❌ |
| B. 最小元素一定是叶 | 反例 5(6, _):最小元素 5 是根、不是叶 | ❌ |
| C. 最后插入的一定是叶 | 旋转后新节点可能变内部节点(如插 1,2,3 触发旋转) | ❌ |
| D. 最大元素一定无左子树 | 中序首位 = 最大 = "一直往左走到底"的节点,按定义没有左子 | ✅ |
D 为什么必然成立:
中序遍历的递归定义是 中序(根) = 中序(左子) + 根 + 中序(右子)。中序输出的第一个元素,就是从根沿左子链一路走到底的那个节点——它没有左子,否则左子的中序输出会排在它前面。
在反 BST 中,最大值就是中序的首位。所以最大值所在节点必无左子树。
关键直觉:把题目条件"中序降序"看成"镜像 BST"——所有"普通 BST 关于最小元素的结论"在这棵树里都变成关于最大元素的结论,反之亦然。
- 普通 BST:最小在最左下,无左子;最大在最右下,无右子
- 反 BST:最小在最右下,无右子;最大在最左下,无左子
常见陷阱:选项 B 把"最右下"和"叶子"画等号——其实"无右子"≠"叶",只要有左子就不是叶。
最终答案是 D(树中最大元素一定无左子树)。