Skip to content

2009年 408 数据结构 第 4 题

数据结构2009年选择题2分

题目

下列二叉排序树中,满足平衡二叉树定义的是( )。四个候选树如下(节点编号仅为文字描述方便,原题节点皆为空圆):

A —— 3 节点左斜链

123

B —— 5 节点

12435

C —— 4 节点曲折链

1234

D —— 6 节点偏树

124653

错因

A

只确认了 A 是合法的二叉排序树(左子树值 < 根 < 右子树值),就忘了 AVL 还要求"任意节点的左右子树高度差 ≤ 1"。A 的根有左子树高度 2、右子树高度 0,差 = 2,从根这一层就已经不满足。

C

和 A 是同一种疏忽。C 是 4 节点的曲折链(根 → 右 → 右 → 左),根的左子树高度 0、右子树高度 3,差 = 3,不平衡。

D

D 的节点最多、画面看上去也"最茂密",很容易误以为它就是平衡的。但 AVL 的关键是每一个节点都要满足高度差约束,不是看树整体形状。D 的根左子树深 3 层(1→2→4→6),右子树深 1 层(1→3),差 = 2,在根这一层就已经违反。

总解析

平衡二叉树(AVL 树)定义:在二叉排序树的基础上,要求任意节点的左、右子树高度差的绝对值不超过 1。注意是"任意"节点,不是只看根。

对四个选项逐一算根节点的左右子树高度差(其它节点同理校验,这里只列关键的不平衡点):

  • A 1(2(3, _), _):左子树高度 2,右子树高度 0 → 差 2,不平衡
  • B 1(2(4, _), 3(5, _)):根左右子树高度均为 2 → 差 0;节点 2、3 各自只有一个左孩子,左右高度差 = 1 → 都满足。整棵树每个节点都符合 AVL 定义 ✓
  • C 1(_, 2(_, 3(4, _))):左子树高度 0,右子树高度 3 → 差 3,不平衡
  • D 1(2(4(6, _), 5), 3):左子树高度 3,右子树高度 1 → 差 2,不平衡

只有 B 满足,答案 B。其结构如下:

12435

最后更新:

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

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