题目
若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为( )。A. X的双亲B. X的右子树中最左的结点C. X的左子树中最右结点D. X的左子树中最右叶结点
若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为( )。
A. X的双亲
B. X的右子树中最左的结点
C. X的左子树中最右结点
D. X的左子树中最右叶结点
题目解答
答案
C. X的左子树中最右结点
解析
考查要点:本题主要考查二叉中序线索树中前驱结点的定位规则,需要理解中序遍历的顺序及线索树的结构特点。
解题核心思路:
在中序遍历中,前驱结点是当前结点左子树中最右下的结点。若结点有左孩子,则其前驱必定位于左子树中,且是左子树中最后一个被访问的结点。若结点无左孩子,则前驱可能通过线索指向其双亲或其他结点,但题目明确限定X有左孩子,因此只需关注左子树的结构。
破题关键点:
- 中序遍历顺序(左→根→右)决定了前驱的位置。
- 左子树中最右结点是左子树中序遍历的最后一个结点,即当前结点的前驱。
在二叉中序线索树中,每个结点通过线索直接指向其前驱和后继。对于有左孩子的结点X(非根):
- 中序遍历规则:先访问左子树,再访问根,最后访问右子树。
- 前驱定义:X的前驱是中序遍历中紧邻X的上一个结点。
- 左子树结构:由于X有左孩子,其前驱必然在左子树中。左子树中序遍历的最后一个结点(即最右下的结点)会直接指向X,因此X的前驱是左子树中最右的结点。
选项分析:
- A. X的双亲:错误。若X有左孩子,前驱一定在左子树中,而非双亲。
- B. X的右子树中最左的结点:错误。右子树中最左的结点是X的后继,而非前驱。
- C. X的左子树中最右结点:正确。左子树中最右的结点是中序遍历中最后一个被访问的结点,即X的前驱。
- D. X的左子树中最右叶结点:错误。最右结点不一定是叶子,例如左子树可能有右链结构。