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