DFSの実装については、以下を参照してください。DFSツリートラバーサル関数の変更
protected void DFS(String search) {
for(Tree<T> child : leafs) {
if(child.value.equals(search))
return;
else
child.DFS(search);
System.out.println(child.value);
}
}
目的は、その値が変数探索にあるノードを見つけることにトラバーサルを停止することです。しかし、上記の関数は、宣言された検索ノードを越えてもツリーを横断し続ける。誰かが上記の機能を変更する手助けをすることができますか?
ありがとうございます。
編集1
protected boolean DFS(String anaphorKey) {
boolean found = false;
for(Tree<T> child : leafs) {
if(child.head.equals(anaphorKey))
return true;
found = child.DFS(anaphorKey);
if(found == true)
break;
System.out.println(child.head);
//System.out.println("anaphorKey: "+anaphorKey);
}
return found;
}
(SJuan76 @)与えられた回答の提案を実装しようとしました。上記の実装は必要に応じて機能していません。ロジックが示すようにコードがない場所に私を向けることができますか?
ありがとうございます。自分のプログラムを自分のプログラムに入れましたが、それでも動作していません。論理によれば、それは明らかにすべきである。コントロールはif(child.head.equals(key))条件を入力していません。キーは確かにツリーにあります。キャスティングエラーですか? –
解決済み!はい、ジェネリックとストリングの間にキャスティングステートメントが必要でした。 –
注:Riyadが指摘しているトリックは、正しいノードが見つかった場合にループがすべての繰り返しをチェックする必要があることです。 – Jochen