【问题标题】:Can a binary search tree be both full and complete?二叉搜索树可以既完整又完整?
【发布时间】:2010-10-19 13:57:50
【问题描述】:

在准备数据结构期中考试时,教授给了我们去年的测试,其中一个问题涉及将示例树重新排列成完整的二叉搜索树。我尝试了几种不同版本的写出树的方法,但是 Wolfram Mathematica 提供的这个完整的二叉树示例根本没有帮助,因为它也符合完整的定义。教科书将完全二叉树定义为n-1级完美的树,在n级有一些额外的叶子节点,全部左对齐。

节点为A E I L N O P R S T U,n=11 个节点。这是我想出的最佳答案:

           R
         /    \
        L      T
       / \    / \
     I    N   S   U
    / \  / \
   A  E O   P

但这适合 WM 的树示例,但不适合书籍示例。那么哪个是正确的答案呢?

【问题讨论】:

  • 你书中对“全二叉树”的定义是什么?
  • 完全二叉树是指树的所有节点都具有两个子节点或根本没有子节点。但是,完整树的定义听起来应该是 S 的左子节点

标签: binary-search-tree


【解决方案1】:

我不完全明白你的困惑在哪里,但我会尽力回答......

如果每个节点正好有 0 或 2 个子节点,则认为二叉树是满的。

如果除最后一层外的每一层都已满,并且所有节点都被推到尽可能远的地方,则认为二叉树是完整的。

因此,如果它符合这两种描述,这是可能的,它可以同时是完整的。

此外,如果二叉树是满的并且所有叶子都在同一级别上,则它被认为是完美的。

所以在你上面画的例子中,那棵树是完整的,但并不完美。

我希望这会有所帮助。

【讨论】:

  • 我的困惑在于不确定一棵树是否可以同时完整和完整。本书的定义在这一点上并不明确,而且似乎与我在网上阅读的其他内容相矛盾。
  • 我希望这会有所帮助。祝你期中考试好运!
【解决方案2】:

更多示例,希望对您有所帮助:

完整,未满:

        R
      /    \
     L      T
    / \    / \
  I    N   S   U
 / \  /
A  E O   

完整,不完整:

        R
      /    \
     L      T
    / \    / \
  I    N   S   U
      / \
     O   P


        R
      /    \
     L      T
    / \    
  I    N   
 / \  / \
A  E O   P

【讨论】:

  • 这是文本示例不足的地方,因为对完整树的描述就像您的第一个示例,除了右节点为 N 和左节点为 S,看起来好像作者说树不可能是完整的。
【解决方案3】:

完整的树: 如果每个节点要么是叶子要么是二叉树 T 是满的 恰好拥有两个子节点。

      O
     / \
    O   O
   / \ / \
  O  O O  O
    / \
   O   O

完整的树但不完整

完整树: 具有 n 层的二叉树 T 是完整的,如果所有 除了可能的最后一个级别完全满, 最后一层的所有节点都在左侧。

       O
      / \
     O   O
    /
   O

完整的树但不完整

同样的,另一个例子

      O
     / \
    O   O
   / \ / \
  O  O O  O
 /\ /
O O O

希望这些对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多