Skip to content

2022年 408 数据结构 第 3 题

数据结构2022年选择题2分

题目

若结点 p 与 q 在二叉树 T 的中序遍历序列中相邻,且 p 在 q 之前,则下列 p 与 q 的关系中,不可能的是( )。

I. q 是 p 的双亲

II. q 是 p 的右孩子

III. q 是 p 的右兄弟

IV. q 是 p 的双亲的双亲

错因

A

误认为"q 是 p 的双亲"不可能。其实只要 p 是 q 的左子树中最右下的结点(即 p 没有右孩子,且 p 处在 q 左子树的最右路径末端),中序遍历就会从 p 直接走到 q。例如最简单情况:p 是 q 的左孩子且 p 没有右子树,p 紧接着输出 q。所以 I 是可能的。

C

II 被错排除了。若 q 是 p 的右孩子且 q 没有左子树,中序"左→根→右"在访问完 p(根)后,下一步进入 p 的右子树,第一个访问的就是 q(因为 q 没有左子树)。所以 II 是可能的。选 C 的人可能想"右孩子之前要先遍历右子树的左子树",没考虑到 q 没有左子树这一情形。

D

IV 被错排除了。"q 是 p 的双亲的双亲"——p 在 q 的左子树里,且 p 是 q 整个左子树中按中序遍历的最后一个结点。具体地,设 q 的左孩子是 x,p 位于 x 的右子树最右下位置(p 与 x 不直接相连,但 p 的某个祖先是 x,q 是 p 父亲的父亲)。中序走完 q 的左子树最后一个就是 p,然后 q 输出。例如:q 的左孩子 x 有右孩子 p(且 p 无右子树),此时 p 的双亲是 x、x 的双亲是 q——q 正是 p 的双亲的双亲。所以 IV 可能。

总解析

思路:中序遍历的递归定义 = 左子树 → 根 → 右子树。p 在 q 之前且相邻意味着两者间没有任何其他结点被访问。

逐项分析:

  • I(q 是 p 的双亲)✓ 可能:p 是 q 的左子树最右下结点(最简形态:p 是 q 的左孩子且 p 无右子树)。
  • II(q 是 p 的右孩子)✓ 可能:q 没有左子树时,p 输出后立刻进入右子树访问 q。
  • III(q 是 p 的右兄弟)✗ 不可能:设它们的共同双亲是 f。中序顺序是「f 的左子树 → f → f 的右子树」。p 在 f 的左子树里、q 在 f 的右子树里,两者之间一定要先访问 f,p 与 q 不可能相邻。
  • IV(q 是 p 的双亲的双亲)✓ 可能:p 是 q 左子树中按中序遍历的最末一个结点。例如 q 的左孩子 x 有右孩子 p(p 无右子树),中序顺序里 …→x→p→q→…,p 与 q 相邻。

只有 III 不可能。

最终答案是 B(仅 III)

最后更新:

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

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