【问题标题】:Basic and Balance BST insertion node placement基本和平衡 BST 插入节点放置
【发布时间】:2013-12-11 04:05:41
【问题描述】:

由于我刚刚学习,我对子节点的某些位置有一些疑问 BSTs,即使在阅读了一些资料并做了一些在线插入小程序之后,它也相当令人困惑。 假设我想将节点 5,7,3,4 添加到一个空的基本 BST。

 add 5

  5  

 add 7

   5
      7   

 add 3

   5

3     7

 add 4

   5

3     7

  4

好的,我知道左孩子必须小于父母并且小于或 等于来自同一父母的右孩子。我一直遵循它,直到我们添加 4 个节点。如何 我们是否确定插入 4 到 3 的右下叶位置而不是左下叶位置? 此外,对节点 5、18、3、7、11 进行 AVL 插入会产生一些令人惊讶的位置放置。插入第四个节点,7,通过 18 而不是 3。有什么特别的原因吗?假设这是正确的方法,插入11会切换11和18点,但不会有18作为父节点,7作为左孩子,11作为右孩子遵守左孩子小于父母和更小的原则或等于右孩子?我糊涂了!我将不胜感激任何帮助。谢谢!

插入 7

 5

3 18

 7

插入 11

 5

3 11

 7 18

【问题讨论】:

    标签: data-structures tree binary-search-tree avl-tree


    【解决方案1】:

    在 BST 中,任何节点的左(右)子树中的元素都小于(大于)子树根的父节点。所以,在 5 的左子树中,3 和 4 都小于 5。现在看 3。4 向右走的原因,是因为 4 大于 3,所以它向右走。

    您的 AVL 问题也是如此。 7 成为 18 的左孩子,而不是 3 的右孩子,因为 5 是根。在进行插入时,您一次比较一个级别的元素。 “7 比 5(根)大吗?是的,向右走。7 比 18 大吗?不,向左走。没有要比较的节点,所以 7 放在这里”。

    将 11 作为右孩子不适合 BST。 11 小于 18,所以它应该在以 18 为根的左子树中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多