Skip to content

2015年 408 数据结构 第 4 题

数据结构2015年选择题2分

题目

现有一棵无重复关键字的平衡二叉树(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:

  1. 插 3 → 3
  2. 插 1 → 3(1, _)
  3. 插 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(树中最大元素一定无左子树)

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数