【问题标题】:How can a node X without right child have a successor?没有右孩子的节点 X 怎么会有后继者?
【发布时间】:2014-02-26 01:06:06
【问题描述】:

当节点 X 没有正确的孩子时,我很难理解它的后继节点。

据我了解,如果一个节点X 没有正确的孩子,那么它就没有后继。

但我的教科书是这样说的:

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

X没有合适的孩子,怎么会有继任者?

【问题讨论】:

    标签: java binary-search-tree


    【解决方案1】:

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

    比如下面5的后继是7

      7
     / \
    5   8
    

    【讨论】:

    • 但是有各种类型的继任者?
    【解决方案2】:

    节点X 的后继节点是树中相对于X最小更大 元素S。也就是说,对于集合G = { Si | Si > X }中的所有节点,那么SGS <= Si的一个元素,对于i=1..n

    在 BST 中,对于任何节点XX 的左子树中的所有元素都小于X,而其右子树中的所有元素都大于它。

    场景

    现在将X 视为树中的任意节点,并让P 为其父节点。在以下两种情况下,X 是否有左子树(其中包含小于 X 的元素)都无关紧要。

    1. X 有一个右子树

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

    2. X 没有右子树

      1. X 是其父级P左孩子

        那么父P就是继承者。

      2. X 是其父 P 的右孩子

        那么X第一个祖先,我们称它为A,这样X落在A的左子树中就是X的后继。

    示例

            10
           /  \
          5    14
         / \   /  \
        3   7  11  15
       / \  /
       1 4  6 
    

    1. 案例 1 的示例

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

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

    【讨论】:

    • 我对这个答案做了很大的改进,相信现在解释应该很清楚了。
    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多