没有右子的节点X如何有后继者?

时间:2014-02-02 15:18:36

标签: java binary-search-tree

如果节点X没有合适的孩子,我很难理解它是什么的继承者。

根据我的理解,如果某个节点X没有合适的孩子,那么就不会有继任者。

但我的教科书上写着以下内容:

  

如果节点X的右侧子树为空,X有后继Y ...

X如果没有正确的孩子,怎么会有继任者?

2 个答案:

答案 0 :(得分:1)

后继者只是有序序列中的下一个元素;它不一定是儿童元素。

例如,下面5的后续版本为7

  7
 / \
5   8

答案 1 :(得分:1)

节点X的后继者是树中与<{1}}相关的最小的元素S。也就是说,对于集X中的所有节点,G = { Si | Si > X }SG的元素,S <= Si

在BST中,对于任何节点i=1..nX左子树中的所有元素都小于X,而右子树中的所有元素都大于X

方案

现在将X视为树中的任意节点,并让P成为其父节点。在以下两种情况下,如果X包含或不包含小于X的元素的左子树,则无关紧要。

  1. X有一个正确的子树

    根据定义,X 的后继者位于右子树中。右子树的最小元素是最左边的元素,它是X的后继元素。如果右子树只包含一个节点,那么它就是X的后继节点。

  2. X没有正确的子树

    1. X是其父<{1}}的左子

      然后父P是继任者。

    2. P是其父X的正确子女

      然后P第一个祖先,我们称之为X,这样A落在X的左子树中就是A的继任者。

  3. 实施例

    X

    1. 案例1的例子

      • 3的继承者是4(或类似地,14的继承者是15)
      • 10的继承者是11(或类似地,5的后继者是6)
    2. 案例2的例子

      • 7的后继者是10(或类似地,4的后继者是5)
      • 11的继承者是14(或类似地,6的继承者是7)