2010-12-06 6 views
0

私は、ハフマンツリーのコードワードを作成するメソッドを作成しています。コードワードを取得するノードのシンボルがメソッドに渡されます。私はちょうどそれがint []を返さなければならないことについてこれをどうやって行くのが肯定的ではない。私はうまくいくと思ったものをコーディングしました。 00101などの出力を作成できるように、int []を適切に使用するにはどうすればよいですか?おかげで[OK]をJava:int []メソッドのヘルプは、ハフマンツリーと関連しています。

public int[] codeWordAsAry(int k) { 
    HuffTreeNode temp; 
    int[] codeWord; 
    int pos = 0; 
    temp = leaves[k]; 
    while (temp.parentOf() != null){ 
     if (temp.isLeftChild()){ 
      codeWord[pos] = 1; 
      pos++; 
     } 
     else { //if isRightChild 
      codeWord[pos] = 0; 
      pos++; 
     } 
    } 

    return codeWord; } 

ので、私はサイズを初期化する理解が、01011のラインなど他の組み合わせに沿って何かをプリントアウトするために、この方法を使用して、その可能性はイムの増分を行う方法であれば、今私は思ったんだけどint []配列内の正しい位置。何を探しているのでしょうか?

+0

あなたは、あなたの結果の配列に 'int型[]コードワード=新しいint型[10]の線に沿って何かをスペースを割り当てる必要があります;'私はどのようにあなたができるかわかりません正しい長さが何であるかを判断する。 –

+0

戻り値の型をArrayList に変更できますか?それとも、int []のみで行う必要がありますか?私がコードから見ることができるのは、各文字についてハフマンコードの長さが異なるためです...ルートまでトラバースするまでint []サイズを取得することはできません... –

+1

" int []を返すのはなぜですか?宿題? –

答えて

2

整数配列にアクセスする前に、その配列をインスタンス化する必要があります。

例えば、

int[] codeWord = new int[size]; 
+0

「サイズ」とは何ですか? –

+0

@Babbanこれは、配列のサイズのようなものです。これは魔法ではない。マットbは、必要なサイズを決定し、次にそれを図示のように使用することを意味します。 –

関連する問題