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

Data structures 如果我们有一些二叉搜索树并执行add(x)和remove(x)操作,那么我们是否必须返回到原始树?,data-structures,tree,binary-search-tree,Data Structures,Tree,Binary Search Tree,x的值应该相同。我们是否通过一次添加和一次删除操作再次获得相同的树?不,不一定。元素集并不是唯一决定树结构的,实现BST的方法有很多,添加和删除元素的机制也不同。某些类型的BST,例如自平衡BST,可以通过破坏其先前结构的信息的方式进行自我调整,因此这些操作通常是不可逆的 例如,假设我们有一个自平衡BST: 8 / \ 3 9 \ 4 我们增加5个: 8 / \ 4 9 / \ 3 5 并删除5: 8 / \ 4 9 / 3

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

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

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

  8
 / \
3   9
 \
  4
我们增加5个:

    8
   / \
  4   9
 / \
3   5
并删除5:

    8
   / \
  4   9
 /
3

你能解释一下AVL树吗?那真的很有帮助。@Abdullahnaem:那怎么办?我的答案中的树可能是AVL树。好的,这取决于
添加
删除
操作的定义,以及BST是否允许包含重复项。