【问题标题】:Understanding this BST insertion technique了解这种 BST 插入技术
【发布时间】:2015-03-19 20:55:05
【问题描述】:

我以为我了解 BST。 直到我的教授出现。

假设我有一个 BST:

   2
  / \
 1   3

现在如果我插入 4,我的树将如下所示:

   2
  / \
 1   3
      \
       4

但是我教授的树最终会是这样的:

   2
  / \
 1   4
    / \
   3   4

基本上,他找到了应该放置新节点的位置并将其放置在那里。然后他将新节点的父节点的值更改为新节点的值,并使父节点的左子节点与原来的父节点相同。

我在网上四处寻找,但找不到这样做的人。

这是一种什么样的插入技术?我错过了什么吗? 我认为这不会有什么不同,但这是专门针对 AVL 树的。

【问题讨论】:

  • 在BST 中,left/right children 必须小于 parent。 (例如,孩子3 必须低于右侧的4)见Inserting an element in Binary Tree
  • @DavidC.Rankin 左右孩子一定要小吗?这不会造成最大堆吗?

标签: insert binary-search-tree avl-tree


【解决方案1】:

我认为他试图严格保持树的二元性,即每个节点有 0 个或正好有 2 个子节点。

据我了解,在示例中,第一个和第二个 4 被添加到它们的位置。左旋转(平衡 avl 树所需)带来最终形状。

【讨论】:

    【解决方案2】:

    您将密钥“4”插入 BST 是完全正确的,我可以向您保证。这是将元素插入 BST 的正统和最简单的方法。

    我认为您误解了您的教授,因为您的第三个插图是不正确的,至少因为 在 BST 中不允许重复,并且您的元素“4”出现了两次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多