二叉树的数组表示(打印方法)

时间:2012-11-02 05:19:49

标签: java arrays printing binary-tree

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

在树的数组表示中:

  

if node:i

     

儿童:2 * i,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

它不必与上面显示的完全相同的表示。它可以是正确显示树的任何表示。

有人可以帮助我吗? 谢谢

2 个答案:

答案 0 :(得分:1)

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

这假设如果某些节点没有两个子节点,那些空子节点仍然在数组中使用空格。

答案 1 :(得分:0)

这是任何人的代码。 (*好久没用Java写了)

public class PrintTree{
 
    
    static int PowerOf2(int power)
    {
        return (1<<power);
    }
    
    static void PrintTreeArray(int array[], int arrayLength)
    {
    int currentLevel = 0;
    int maxPerLevel = PowerOf2(currentLevel);
    for(int i = 0; i < arrayLength; i++)
    {
        if(i == maxPerLevel-1)
        {
            System.out.println("\n");
            currentLevel++;
            maxPerLevel = PowerOf2(currentLevel);
        }
        System.out.print(" "+array[i]);
    }
    }

     public static void main(String []args)
     {
        int[] array = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
        PrintTreeArray(array,15);
     }
}