私は、triNodeのcharキーとarrayListを持つTrieNodeというクラスを持っています。私はトライを実装しようとしています。再帰的メソッド内のjava-loop
構造:例えば
ルートキーがあります ''子供たちはt、o、s、pです。キー 's'を持つノードの場合、子はtとpです。私はトライのノードの数を計算したい。私はこのアルゴリズムを使用しました
public int size(TrieNode tmp, int n){
if(tmp.children.isEmpty()){
return 0;
}
for(int i=0;i<tmp.children.size();i++){
return 1 + size(tmp.children.get(i), n);
}
return 1;
}
問題は私が各呼び出しで一意ではありません。したがって、メソッドはルートで呼び出され、次に、それが子tに続いてtに続いてpまで呼び出されます。それが再びsに戻るとき、pのメソッドを呼び出さない。
これを修正するにはどうすればよいですか?
なぜ再帰とループを混合していますか? –
私はすべてのノードで自分のメソッドを呼び出すためにarraylistを繰り返したいからです。 –
@Aominèなぜ彼はいけないのですか?ツリーがあり、すべてのノードで再帰する必要がある場合は、特定のノードのすべての子ノードをループして、それぞれのノードを再帰させてもよいと思います。 – BackSlash