Appearance
题目
将森林转换为对应的二叉树,若在二叉树中,结点 u 是结点 v 的父结点的父结点,则在原来的森林中,u 和 v 可能具有的关系是( )。 I. 父子关系 II. 兄弟关系 III. u 的父结点与 v 的父结点是兄弟关系
错因
A
只想到了 "u 右-w 右-v 右" 这条全兄弟链——u, w, v 在原森林里同辈,所以判 II 兄弟成立;却没考虑 "u 左-w 左" 在原森林里就是 "u→w 父子,w→v 父子",这种链下 v 仍是 u 的孩子(再往下一层),不能直接当父子关系数。漏掉的关键是 "u 左-w 右"——w 是 u 的第一个孩子时它的右孩子是它的下一个兄弟,于是 v 也成了 u 的孩子,这才让 I 父子关系成立。
C
把 III 误读成了"u 是 v 的祖父,所以 u 父和 v 父理应是兄弟"。这是把森林里"祖孙隔一辈"的常识硬套到二叉树上。但二叉树里 u 是 v 的祖父只意味着 u 和 v 之间隔一个 w,原森林的关系完全由 w 是 u 的左/右孩子、v 是 w 的左/右孩子两个二选一决定——四种组合穷举完都不会出现"u 父和 v 父是兄弟"这种跨两个父代的关系。
D
把 III 也算上是同一个误区(详见 C),同时把 II 也判对了——多选反而暴露了根本没逐条枚举。考研常见陷阱:"看着合理"和"两步路径推得出"是两件事,必须用四种 (左/右) × (左/右) 组合穷举一遍才能下结论。
总解析
森林转二叉树采用"左孩子右兄弟"规则:节点 x 在二叉树中的左孩子 = x 在森林中的第一个孩子;右孩子 = x 在森林中的下一个兄弟。
u 是 v 的祖父(相隔一个节点 w)意味着有两层父子关系,需枚举 w 与 u、v 与 w 的关系各两种(左/右),共四种子路径:
| w 是 u 的 | v 是 w 的 | 在原森林中 u 与 v 的关系 |
|---|---|---|
| 左孩子 | 左孩子 | u 是 w 的父,w 是 v 的父 → u 是 v 的祖父 |
| 左孩子 | 右孩子 | u 是 w 的父,v 是 w 的下一兄弟 → v 的父也是 u,即父子关系(I) |
| 右孩子 | 左孩子 | w 是 u 的下一兄弟,v 是 w 的孩子 → u 与 v 叔侄关系(不在 I/II/III 中) |
| 右孩子 | 右孩子 | w 是 u 的下一兄弟,v 是 w 的下一兄弟 → u、w、v 同层 → u 与 v 是兄弟关系(II) |
可能的关系只有 I 和 II,III 不能由两步路径产生。答案 B。