2

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

在树的数组表示中:

如果节点:我

孩子: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

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

有人可以帮我吗?谢谢

4

2 回答 2

2

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

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

于 2012-11-02T05:27:19.533 回答
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);
     }
}
于 2021-07-31T11:17:09.923 回答