Appearance
题目
若平衡二叉树的高度为 6 ,且所有非叶结点的平衡因子均为 1 ,则该平衡二叉树的结点总数为( )。
错因
A
凭感觉估了一个偏小的数。可能用了 之类的简单线性公式。但 AVL 树的节点数随高度指数级增长(接近斐波那契递推),不是线性关系——10 远远不够装一棵高度 6 的 AVL 树。
C
按"满二叉树"算了。满二叉树高 6 节点数是 ,再除 2 凑一个 32。但本题是"所有非叶 BF=1"——左子树严格比右子树高 1,是最稀疏的 AVL 树(斐波那契树)形态,远不是满二叉树。
D
类似 C 的思路,套了 但少减了点。AVL 满载是 63,最稀疏是 20,本题答案在最稀疏端附近,不是 33。
总解析
关键约束理解:所有非叶节点 BF = 1,即"每个非叶节点的左子树严格比右子树高 1"。这是 AVL 树最稀疏的形态,节点数最少——也叫斐波那契树。
设 为这种树高度为 时的节点数。递推:
含义:根(1 个)+ 左子树(高 ,节点数 )+ 右子树(高 ,节点数 )。
逐层算( 单节点叶子, 根+左孩子):
| 高度 | ||
|---|---|---|
| 1 | — | 1 |
| 2 | — | 2 |
| 3 | 4 | |
| 4 | 7 | |
| 5 | 12 | |
| 6 | 20 |
背景知识: 恰好是斐波那契数列的某项——()。这是 AVL 树最少节点数的经典结论,记住"AVL 高度 6 至少 20 个节点"对快速判题很有用。
最终答案是 B(20)。