二进制搜索树删除程序与孩子

时间:2016-03-09 03:05:44

标签: data-structures tree binary-tree binary-search-tree

不确定如何说出这个问题。基本上采取以下BST:

       25
     /    \
   20      30
  /  \      / \
 18   23  27   31
/  \   /\
8  19 22 24

如果我要删除值25并将值20旋转到其位置,将23子树附加到27或将30子树附加到24是否更有意义。我并不意味着具体到这种情况,但从更广泛的角度来看。

为了清楚起见,这两种安排之间的优势是什么:

      20
    /    \
  18      23
 /  \      / \
8   19    22  24
                \
                 30
                /  \
              27   31

      20
    /    \
  18      30
 /  \     / \
8   19  27  31
        /
       23
      /  \
     22  24

1 个答案:

答案 0 :(得分:1)

旋转20不是最明智的决定。您应该使用左子树的最大值或右子树的最小值替换它。

如果您希望以您的方式旋转,那么树的高度之间没有差异,并且两者在时间复杂度方面都是相同的。