【问题标题】:Exam question about inserting to a empty binary search tree关于插入空二叉搜索树的考试题
【发布时间】:2011-06-26 12:20:38
【问题描述】:

我无法解释有关将元素插入二叉搜索树的某个问题。我熟悉前序、后序和中序遍历,但我不熟悉以下问题:

假设我们按顺序将元素 3、5、6、1、2、4、7 插入一棵最初为空的二叉搜索树中。

如果我只得到一组按该顺序插入的数字,我应该如何将其变成二叉搜索树? 3 会是根吗?我会自己平衡其他数字到正确的子树吗?在那种情况下不会有很多解释吗?是否遵循某种约定?

谢谢。

【问题讨论】:

    标签: binary-search-tree


    【解决方案1】:

    向树中添加项目时,现有树不会重新排序。新项目仅添加到叶节点。这意味着当您第一次添加 3 时,3 将是结果的根节点。当您添加 5 时,它将位于 3 的右侧,依此类推。这会产生以下树:

       3
     /   \
    1     5
     \   / \
      2 4   6
             \
              7
    

    【讨论】:

    • 有没有办法告诉把 7 放在哪里?因为它不能也到 4 或 2 的右边吗?
    • 7大于3,所以在3的右边。大于5,所以在5的右边,以此类推
    • 哦,我明白了。谢谢你。一直以来我都误解了整个事情,以为您只查看直接节点而不是之前出现的节点。
    【解决方案2】:

    如果没有关于如何平衡树的规则的任何进一步信息,我将不得不假设它指的是“幼稚”的不平衡树。

    所以这个:

             3
      /-----/ \-----\
     1               5
      \--\       /--/ \--\
          2     4         6
                           \-\
                              7
    

    【讨论】:

      【解决方案3】:

      是的,3 将是根,因为在第一次插入之后,整个树只有一个元素。保持同样的逻辑,if (number, left, right) 代表你得到的一个节点:

      1. (3,,)

      2. (3,,(5,,))

      3. (3,,(5,,(6,,)))

      4. (3,(1,,),(5,,(6,,)))

      5. (3,(1,,2),(5,,(6,,)))

      6. (3,(1,,2),(5,(4,,),(6,,)))

      7. (3,(1,,2),(5,(4,,),(6,,7)))

      【讨论】:

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