二叉搜索树可以是完整的还是完整的?

时间:2010-10-19 13:57:51

标签: binary-search-tree

为了准备数据结构中期,教授给了我们去年的测试,一个问题涉及将一个示例树重新安排到一个完整的二叉搜索树中。我已经尝试了写出树的几个不同版本,但是来自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的树的例子,但不是书的例子。那么哪个是正确答案?

3 个答案:

答案 0 :(得分:11)

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

如果每个节点只有0或2个子节点,则认为二叉树已满。

如果除了最后一个级别之外每个级别都已满,则认为二叉树已完成,并且所有节点都被尽可能地向左推送。

因此,如果它符合这两种描述,那么它可以同时完整和完整。

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

因此,在上面提到的示例中,该树已经完整且完整,但并不完美。

我希望这会有所帮助。

答案 1 :(得分:3)

更多希望有用的例子:

完整,但不完整:

        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

答案 2 :(得分:1)

全树: 如果每个节点都是叶子或者,则二叉树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

我希望这些有用!