2016-11-18 8 views
0

私のコーディングプロジェクトに問題があります。このプログラムは、WordCountオブジェクトを保持するバイナリ検索ツリーです。これらは、単語の文字列と単語がテキストファイルに現れる回数を保持する整数の2つのフィールドだけを保持します。Java - パラメータなしでバイナリ検索ツリーを再帰的にトラバースする方法

私が問題を抱えている方法は、最も一般的な単語を見つけるためにツリーを横断する必要があります。私はこのトリックを行うメソッドを実装しましたが、メソッドが再帰的であり、パラメータを使用していないことがわかりました。

私はすでに書いた方法はここにある:

WordCount getMostCommonWord(BinaryTreeNode<WordCount> wordNode) 
     throws EmptyCollectionException { 

    WordCount current = wordNode.getElement(); 

    BinaryTreeNode left = wordNode.getLeftChild(); 
    BinaryTreeNode right = wordNode.getRightChild(); 

    WordCount maxLeft; 
    WordCount maxRight; 

    if (left != null) { 
     maxLeft = getMostCommonWord(left); 
     if (current.getCount() < maxLeft.getCount()) { 
      current = maxLeft; 
     } 
    } 

    if (right != null) { 
     maxRight = getMostCommonWord(right); 
     if (current.getCount() < maxRight.getCount()) { 
      current = maxRight; 
     } 
    } 

    return current; 
} 

また、これは私が間違ってそれをやっている場合、私はとても残念、ここに投稿したの初めてです。パラメータなしで動作させる方法に関するヒントは、多くの助けになります。前もって感謝します!

+1

「wordNode」ではなく「this」を使用するようにリファクタリングするだけです。 'getMostCommonWord(left)'の代わりに 'left.getMostCommonWord()'を使います。 – 4castle

+0

バイナリツリーソートとは何ですか?ワードカウントでソートされていて、ワードカウントが最も高いノードが必要な場合は、右端(降順の場合は一番左側)のノードになります。再帰は "私には権利があるなら、私の権利の結果を返し、そうでなければ私の結果を返す" –

答えて

0

もうすぐです。パラメータを使用することはできませんので、これを直接ノードクラスのメソッドにしてください。次に、thisを使用します。

これは一般的な利点がありますが、T,wordCountの場合は、Comparableを実装する必要があります。

関連する問題