数据结构 -- 树相关面试题
二、树相关的填空题
1.对于一个具有 n 个结点的二叉树,当它为一棵 ________ 二叉树时,具有最小高度,即为 ________;当它为一棵单支树时具有最大高度,即为 ________。
2.对于一个具有 n 个结点的二叉树,当它存储在二叉链表中时,其指针字段的总数为 ________ 个,其中 ________ 个用于链接孩子结点; _______ 个空闲。
3.一棵深度为 k 的满二叉树的结点总数为 ________,
一棵深度为 k 的完全二叉树的结点总数的最小值为 ________,最大值为 ________。
4. 由三个结点构成的二叉树,共有 ________ 种不同的结构。
答案分析:
我们来逐条分析这些填空题的正确答案,并给出详细的解释。
第1题:
对于一个具有 n 个结点的二叉树,当它为一棵 ________ 二叉树时,具有最小高度,即为 ________;当它为一棵单支树时具有最大高度,即为 ________。
✅ 答案:
满二叉树, ⌈ log 2 ( n + 1 ) ⌉ \left\lceil \log_2(n+1) \right\rceil ⌈log2(n+1)⌉, n
🔍 解释:
-
最小高度出现在完全填满的情况下,也就是满二叉树(Full Binary Tree)。
- 满二叉树每一层都填满了节点。
- 高度 $ h $ 的满二叉树最多有 $ 2^h - 1 $ 个节点;
- 所以对于 n 个节点来说,最小高度为满足 $ 2^{h} - 1 \geq n $ 的最小 h,即:
h = ⌈ log 2 ( n + 1 ) ⌉ h = \left\lceil \log_2(n + 1) \right\rceil h=⌈log2(n+1)⌉
-
最大高度出现在单支树(退化成链表)的情况下,每个节点只有一个孩子,所以高度为 n。
第2题:
对于一个具有 n 个结点的二叉树,当它存储在二叉链表中时,其指针字段的总数为 ________ 个,其中 ________ 个用于链接孩子结点,________ 个空闲。
✅ 答案:
2n, n - 1, n + 1
🔍 解释:
- 每个节点有两个指针域(左孩子和右孩子),共 2n 个指针;
- 除了根节点外,每个节点都被一个指针所指向,所以只有 n - 1 个指针被使用;
- 因此,空指针数 = 总指针数 - 使用的指针数 = 2n - (n - 1) = n + 1
第3题:
一棵深度为 k 的满二叉树的结点总数为 ________,
一棵深度为 k 的完全二叉树的结点总数的最小值为 ________,最大值为 ________。
✅ 答案:
2 k − 1 2^k - 1 2k−1, 2 k − 1 2^{k-1} 2k−1, 2 k − 1 2^k - 1 2k−1
🔍 解释:
- 满二叉树:每层都填满,总节点数是:
2 0 + 2 1 + ⋯ + 2 k − 1 = 2 k − 1 2^0 + 2^1 + \cdots + 2^{k-1} = 2^k - 1 20+21+⋯+2k−1=2k−1 - 完全二叉树:最后一层可以不满,但必须从左到右连续填充;
- 最小情况:只有最后一层有一个节点,其余层都是满的,即:
2 k − 1 2^{k-1} 2k−1 - 最大情况:就是满二叉树的情况,即:
2 k − 1 2^k - 1 2k−1
- 最小情况:只有最后一层有一个节点,其余层都是满的,即:
第4题:
由三个结点构成的二叉树,共有 ________ 种不同的结构。
✅ 答案:
5
🔍 解释:
这是求不同形态的二叉树数量的问题。
对于 n 个节点的不同结构的二叉树数目,是一个经典的卡特兰数问题。
- 卡特兰数公式:
C n = 1 n + 1 ( 2 n n ) C_n = \frac{1}{n+1} \binom{2n}{n} Cn=n+11(n2n) - 当 n = 3 时:
C 3 = 1 4 ( 6 3 ) = 1 4 × 20 = 5 C_3 = \frac{1}{4} \binom{6}{3} = \frac{1}{4} \times 20 = 5 C3=41(36)=41×20=5
✅ 五种不同结构(形态)如下(根节点设为 A,左子树、右子树用 B、C 表示):
结构 1:
A/B/
C
A 只有左孩子 B
B 只有左孩子 C
结构 2:
A/B\C
A 只有左孩子 B
B 只有右孩子 C
结构 3:
A/ \B C
A 有两个孩子:B(左),C(右)
结构 4:
A\B/C
A 只有右孩子 B
B 只有左孩子 C
结构 5:
A\B\C
A 只有右孩子 B
B 只有右孩子 C
✳️ 总结:
结构编号 图形表示
1 A → B → C(全左单支)
2 A → B ←→ C(B 右子节点)
3 A 有两个孩子 B 和 C(完整层次)
4 A → (右) B → (左) C
5 A → (右) B → (右) C(全右单支)
🧠 补充说明:
- 每一种结构都代表了不同的拓扑形态。
- 虽然结点名可以任意改变,但在不考虑名字的情况下,只有这5种互不相同的二叉树结构。
- 注意区分“结构不同”与“中序/先序遍历顺序不同”,这里是根据形状来判断的。
✅ 最终完整答案汇总如下:
题号 | 填空内容 | 正确答案 |
---|---|---|
1 | 对于一个具有 n 个结点的二叉树,当它为一棵 ________ 二叉树时,具有最小高度,即为 ________;当它为一棵单支树时具有最大高度,即为 ________。 | 满, ⌈ log 2 ( n + 1 ) ⌉ \left\lceil \log_2(n+1) \right\rceil ⌈log2(n+1)⌉, n |
2 | 其指针字段的总数为 ________ 个,其中 ________ 个用于链接孩子结点,________ 个空闲。 | 2n, n - 1, n + 1 |
3 | 满二叉树的结点总数为 ________,完全二叉树的结点总数的最小值为 ________,最大值为 ________。 | 2 k − 1 2^k - 1 2k−1, 2 k − 1 2^{k-1} 2k−1, 2 k − 1 2^k - 1 2k−1 |
4 | 由三个结点构成的二叉树,共有 ________ 种不同的结构。 | 5 |