【问题标题】:3-element binary search trees三元素二叉搜索树
【发布时间】:2011-04-01 10:31:37
【问题描述】:

我正在为我的高级编程课程准备一份过去的试卷,但我被这个问题困住了

二叉搜索树中的值必须满足什么属性?有多少个不同的二叉搜索树包含三个值 1 2 3?解释你的答案。

我可以很容易地回答第一部分,但第二部分,关于可能的树的数量让我很难过。我的第一直觉是说只有一棵树可能,以2为根,因为定义是这样说的,但是这个问题是整篇论文总共100分中的8分,所以我只能假设这是一个技巧问题,并且有一个更微妙的解释,但是讲义中没有任何内容可以解释这一点。有人知道谁来回答这个问题吗?

【问题讨论】:

  • 我喜欢这个问题。下次我在这门课上辅导同学时,我肯定会使用它。它让你想到搜索树平衡树之间的区别。

标签: data-structures binary-search-tree


【解决方案1】:

问题并没有说树是平衡的,所以想一想1或3是否可以在根节点。

【讨论】:

    【解决方案2】:

    尝试考虑所有可能具有这三个节点的二叉树。这些树中有多少满足二叉搜索树的性质?

    【讨论】:

      【解决方案3】:

      我认为一个技巧是一棵树可以是一个退化的树(实际上是一个元素的链表):

      1
       \
        2
         \
          3
      

      及其变体。

      另外,这些树是否被认为是相同的?

        2        2
       / \      / \
      3   1    1   3
      

      【讨论】:

      • 问题被标记为作业,你为什么不提供一个提示,而不是完整的答案?
      • @jmg 哎呀,对不起。从来没想过。
      【解决方案4】:

      如果我没记错的话,树的根不必是“中间元素”。因此还有更多的树组合:

          2
      1        3
      or
      1
          2
              3
      or
      1    
              3
          2
      or
              3
          2
      1
      or
              3
      1
          2
      

      也许我忘记了一些,但我想你会明白的。只是为了我的符号:换行符在树中遇到下降,上线的左右显示它是其父节点的右侧还是左侧;)

      【讨论】:

      • 问题被标记为作业,你为什么不提供一个提示,而不是完整的答案?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多