第 4 题
森林 F 中有 5 颗树,其节点个数分别为 2、3、4、5、7,森林中树的次序可以任意,问 F 对应的二叉树最小高度为多少?
A. 5 B. 6 C. 8 D. 10
[tag_link]
正确答案:B
**【解析】**这是一道 森林 → 二叉树(左孩子 - 右兄弟表示法) 的经典题。**关键结论(必须掌握)**把森林转换为二叉树(左孩子 - 右兄弟)后:****二叉树的高度 = max( 第 i 棵树的高度 + (i − 1) )****其中
- 第i棵树是森林中从左到右的顺序;
- (i−1)来自“右兄弟”链;
- 为了最小高度,应当把高度最大的树放在最前面。先算每棵树的最小可能高度一棵有n个结点的普通树,其最小高度为:hmin=⌈log2(n+1)⌉
结点数 最小高度 7 ⌈log28⌉= 3 5 ⌈log26⌉= 3 4 ⌈log25⌉= 3 3 ⌈log24⌉= 2 2 ⌈log23⌉= 2
排序(从大到小):3, 3, 3, 2, 2计算二叉树最小高度按最优顺序依次计算:
| i | 树高 hi | hi+(i−1) |
|---|---|---|
| 1 | 3 | 3 |
| 2 | 3 | 4 |
| 3 | 3 | 5 |
| 4 | 2 | 5 |
| 5 | 2 | 6 |
最大值 = 6