删除 BST 中的多个节点会更改生成的树吗?

deleting multiple node in BST changes the resulting tree?

如果我需要删除 BST 中的多个节点,生成的树是否会改变删除顺序?正常的左右顺序会保留,但树状结构我不太清楚

这是一个"phisolophical"问题,我需要它的解说或反例。

要证明删除的顺序对最终的树没有影响,需证明任意两个删除操作互换(即顺序颠倒则效果相同)是必要且充分的。

删除节点的影响仅限于该节点及其作为根的子树。因此,如果两个节点是分开的(即都不在另一个节点之下),那么它们的删除会交换。因此,唯一感兴趣的案例是一个节点位于另一个节点的子树中。

不失一般性,假设我们使用这样的规则:当我们删除一个有两个 children 的节点时,我们用它的后继者替换它。我们将较高的称为A,较低的称为B。如果B在A的左子树中,则删除可交换,因为A的删除对A的左子树没有影响,而B的删除也没有影响outside A的左子树。所以唯一感兴趣的情况是 B 在 A 的右子树中。

当A被删除时,对A的右子树的影响与A的后继被删除是一样的。假设B是不是A的继任者;我们将调用 A 的后继 C。A 的删除包括从右子树中删除 C 和用 C 替换 A(可交换),因此如果删除 B 和 C 可交换,则删除 A 和B通勤。通过归纳,如果任何一对删除不交换,则删除 A 和 B,其中 B 是 A 的后继者不交换。

但是通过检查,A 及其后继者的删除确实有效。 Q.E.D.

Deleting 1 and 2 in different order results in two different trees反例: 删除 1 和 2 的顺序导致不同的 BST。 因为一开始要删除2的时候,必须在它的里面找到下一个元素 右子树,也就是3,用2代替,但是先删1,再删2,现在它只有一个子树,直接用它的子树代替,就是4。 所以结果是两棵不同的树。