Appearance
题目
下列二叉排序树中,满足平衡二叉树定义的是( )。四个候选树如下(节点编号仅为文字描述方便,原题节点皆为空圆):
A —— 3 节点左斜链
B —— 5 节点
C —— 4 节点曲折链
D —— 6 节点偏树
错因
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。其结构如下: