children 的二进制搜索树删除过程

Binary Search Tree deletion procedure with children

不确定如何表达这个问题。基本上采取以下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

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

如果您确实希望按照您的方式旋转,树的高度之间没有区别,并且两者的时间复杂度相同。