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

Data structures 从具有重复项的BST中删除具有左右子树的节点,data-structures,binary-search-tree,Data Structures,Binary Search Tree,描述了从二进制搜索树中删除节点的情况: “4.要删除的值同时具有左子树和右子树,在这种情况下 提升左子树中的最大值。“ 比如说,我们有以下内容(我试着让它看起来像一棵树): 如果我们去掉根(7),它说我们应该把6放在它的位置上。现在看起来是这样的(只是感觉不对): 现在6是6的左节点。但它不应该,对吗(左边的值应该更小)?所以,我想我的问题是:有这样的案例可以吗?如果这种情况可以接受,是否有一个名称?还是我们应该选择其他节点来替换删除的节点?您是否假设所有“相等”值都位于正确的子树中?如果是这样

描述了从二进制搜索树中删除节点的情况:

“4.要删除的值同时具有左子树和右子树,在这种情况下 提升左子树中的最大值。“

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

如果我们去掉根(7),它说我们应该把6放在它的位置上。现在看起来是这样的(只是感觉不对):


现在6是6的左节点。但它不应该,对吗(左边的值应该更小)?所以,我想我的问题是:有这样的案例可以吗?如果这种情况可以接受,是否有一个名称?还是我们应该选择其他节点来替换删除的节点?

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

通常,在BST中不能有相同的值。这是一组唯一的键(在本例中也是这些值)@clct在本书的同一页上说:“当然,在BST中,一个值可能会出现多次。在这种情况下,该值在BST中的首次出现将被删除。”
      7
  6       8
5   6       8
      6
  6       8
5           8