2

割り当てが完了し、出力の見栄えを良くしたいので、バイナリツリー(配列で表される)のツリー構造を印刷できるprintメソッドが必要です。

ツリーの配列表現では、次のようになります。

ノードの場合: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

上記とまったく同じ表現である必要はありません。ツリーを適切に表示する任意の表現にすることができます。

誰かがそれを手伝ってくれる?ありがとうございました

4

2 に答える 2

2

とても簡単なはずです。最初の行については、1を印刷します。2番目の行は、配列要素2、3を印刷します。3番目の行は、配列要素4、5、6、7を印刷します。4行目、8、9、10、11、12、13、14、15。パターンを見ますか?各行で、要素2 ^nから2^(n + 1)-1を出力します。ここで、一番上の行はゼロです。

これは、2つの子のないノードがある場合でも、それらのnullの子が配列内のスペースを使用していることを前提としています。

于 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 に答える