Skip to content

2013年 408 数据结构 第 5 题

数据结构2013年选择题2分

题目

若 X 是后序线索二叉树中的叶结点,且 X 存在左兄弟结点 Y 。则 X 的右线索指的是( )。

错因

B

混淆了前/中/后序线索的方向。"以 Y 为根的子树的最左下结点"是 Y 子树前序遍历的第一个节点(也常是中序遍历的第一个),与后序后继没有直接关系。后序遍历是"左右根",这种"最左下"不是关键参照点。

C

误以为"左右兄弟在线索里互为前后继"。实际上后序遍历顺序是"左→右→根"——访问 X 时,Y 子树早就访问完了,Y 在后序中是 X 的前驱方向节点(具体是 Y 子树最后一个),不是后继。线索是指后继,不是指前驱。

D

把"X 的后序前驱"当成了"X 的后序后继"。Y 子树最右下结点确实是后序遍历 Y 子树的最后一个节点,所以它是 X 的后序前驱(紧挨在 X 之前被访问),它会被存在 X 的左线索里——但题问的是右线索,方向反了。

总解析

后序线索二叉树的定义回顾:节点的右指针有两种含义——

  • 若 X 有右孩子 → 右指针指向真实右孩子
  • 若 X 无右孩子(X 是叶子或仅左孩子) → 右指针存后序遍历中 X 的后继(这是"线索")

本题已知

  • X 是叶子(无左右孩子)
  • X 有左兄弟 Y → 说明 X 的父亲既有左孩子(Y)又有右孩子(X),且 X 是父亲的右孩子

找 X 的后序后继

后序遍历是"先左子树、再右子树、最后根"。设 P = X 的父亲,遍历 P 子树时的次序是:

[Y 子树后序遍历完整]  →  [访问 X]  →  [访问 P]  →  [继续 P 的兄弟/祖先]

紧接在 X 之后访问的是 P——X 的父亲。

更一般的口诀:后序线索二叉树中,右孩子的后继恒为父亲
推导:访问完一个右孩子,下一步必然是回到父亲访问"根",这是后序"左右根"的固定节奏。

特殊情况辨析:如果 X 是叶子但没有左兄弟(即 X 是父亲的左孩子),那 X 的后继不是父亲,而是父亲的右子树后序的第一个节点(也就是右子树最左下的叶子)。本题强调"X 有左兄弟",正是为了排除这种情况,让答案唯一锁定"父亲"。

最终答案是 A(X 的父结点)

最后更新:

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

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