如果我们有一些二叉搜索树并执行 add(x) 和 remove(x) 操作,我们是否必须 return 到原始树?

If we have some Binary Search Tree and perform the operations add(x) followed by remove(x) do we necessarily return to the original tree?

x的值应该相同。我们是否通过一次添加和一次删除操作再次得到同一棵树?

不,不一定。元素集并不能唯一地确定树的结构,并且有多种实现 BST 的方法,具有不同的添加和删除元素的机制。某些类型的 BST,例如自平衡 BST,可以通过破坏有关其先前结构的信息的方式进行自我调整,因此这些操作通常是不可逆的。

例如,假设我们有一个自平衡 BST:

  8
 / \
3   9
 \
  4

我们加5:

    8
   / \
  4   9
 / \
3   5

并删除 5:

    8
   / \
  4   9
 /
3