【问题标题】:Removing a node with left and right subtrees from BST with duplicates从具有重复项的 BST 中删除具有左右子树的节点
【发布时间】:2013-10-15 20:51:04
【问题描述】:

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

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

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

      7
  6       8
5   6       8

如果我们删除根 (7),它表示我们应该将 6 放到它的位置。现在看起来像这样(只是感觉不对):

      6
  6       8
5           8

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

【问题讨论】:

  • 一般情况下,BST 中的值不能相同。它是一组 unique 键(在这种情况下也是值)
  • @clcto 这本书的同一页说:“当然,在 BST 中,一个值可能出现不止一次。在这种情况下,该值在 BST 中的第一次出现将被删除。”

标签: data-structures binary-search-tree


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多