Skip to content

2026年 408 数据结构 第 8 题

数据结构2026年选择题2分

题目

已知平衡二叉树 (AVL 树) 高度为 4(根节点高度记为 1),则其根节点的左右子树的节点数之差最多为()。

错因

A

把"平衡因子绝对值 ≤ 1"误解成"左右子树节点数之差 ≤ 1"。AVL 的平衡条件约束的是子树高度差,而不是节点数差。哪怕高度只差 1,节点数也可以差很多——比如高度 3 的满二叉树有 7 节点,高度 2 的最少节点 AVL 子树只有 2 节点,差 5。

B

可能用"左子树最多节点 − 右子树最多节点"的思路:左右都最多时(都是高度 3 的满二叉树),各 7 节点,差 0,并不是 2。或者用"高度 3 满 7 − 高度 2 满 5 = 2",但这要求两边都"满",没把"右边可以最瘦"利用起来。

C

按"AVL 严格平衡 → 左右子树高度必须相等"算,左右都取高度 3:左最多 7、右最少 4(高度 3 的最少节点 AVL:N(3)=N(2)+N(1)+1=2+1+1=4)→ 差 3。错在"左右子树高度必须相等"——AVL 允许左右子树高度差为 1,本题让一棵高 3、另一棵高 2 才能拉开节点差。

总解析

条件回顾:AVL 树高度 4(根算第 1 层),求根的左右子树节点数差的最大值。

思路:让一棵子树尽量胖、另一棵尽量瘦。

Step 1:高度约束

整棵树高度 4 → 至少有一棵子树高度 3(否则整树高度只到 3)。AVL 平衡条件允许另一棵子树高度比这棵差 1,即高度 2。

最佳分配:胖的子树高 3,瘦的子树高 2

Step 2:胖子树最多节点

高度 3 的二叉树最多节点 = 满二叉树 =

Step 3:瘦子树最少节点(AVL 高度 h 最少节点的递推)

h1234
N(h)1247

高度 2 的最少节点 = N(2) = 2

Step 4:节点数之差

举例验证(一棵高度 4 的合法 AVL):

                root
               /    \
            (高3满)  (高2最少)
              7节点    2节点

整棵树高度 4,根的左右子树高度差 |3-2|=1 ≤ 1(AVL 合法),节点差 5。

最终答案是 D

最后更新:

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

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