使用重复项从BST中删除具有左右子树的节点

时间:2013-10-15 20:51:04

标签: data-structures binary-search-tree

DSA book描述了从二叉搜索树中删除节点的情况:

“4。要删除的值包含左右子树,在这种情况下我们 提升左子树中的最大值。“

让我们说,我们有以下内容(我试图让它看起来像一棵树):

      7
  6       8
5   6       8

如果我们删除root(7),它说我们应该把6放到它的位置。现在它看起来像那样(感觉不对):

      6
  6       8
5           8

现在6是6的左节点。但它不应该,正确(左边的值应该更少)?所以,我想我的问题是:这样的情况可以吗?如果这种情况是可以接受的,那有名字吗?或者我们应该选择其他一些节点来替换被删除的节点吗?

1 个答案:

答案 0 :(得分:0)

您是否假设所有“相等”值都在正确的子树中?如果是这样,您始终可以在其右侧子树中替换具有最小值的节点。如果他们可以在任何一方,那么你没有问题。