2012-11-02 26 views
2

我完成了我的任务,只是希望输出看起来不错,所以我需要一个可以打印二叉树(由数组表示)的打印方法。二叉树的数组表示(打印方法)

在树的数组表示:

如果节点:ⅰ

儿童:2 * 1,2 * i + 1的

父级:I/2

例如,对于阵列

value 10 5 8 2 3 6 7 
index 1 2 3 4 5 6 7 

树表示应该是:

 10 
    5  8 
2 3 6 7 

它不必须是,如上所示完全相同的表示。它可以是正确显示树的任何表示。

有人可以帮我吗? 谢谢

回答

1

它应该很容易。对于第一行,打印1.第二行,打印数组元素2,3 3.第三行,打印数组元素4,5,6,7。第四排,8,9,10,11,12,13,14,15。看到模式?每行打印元素2^n到2 ^(n + 1) - 1,其中第一行为零。

这假定如果有一些节点没有两个孩子,那些空的孩子仍然使用数组中的空间。

+0

谢谢你的回复。我知道了! 你能否也请告诉我如何使用数组计算树的级别? 例如,如果数组有1个元素,则其级别为1, 如果2-3个元素,级别为2, 4-7个元素,级别为3等。 是否有计算公式? – CSCSCS

+0

由于每个级别具有前一级别的两倍,因此完整二叉树中的项目数量是2的幂(减1)。换个方式找到深度,你应该可以使用一个2的对数。 – xpda