値がバイナリ検索ツリーに含まれているかどうかを確認しようとしていますが、再帰を使用してツリーをトラバースしています。問題は関数が真ではなく呼び出しスタックの最後の値としてfalseを返すことです。ここでJava return boolean true再帰を使用する
は擬似コードです:
public boolean containsValue(Node node, Value v) {
if (node.value.equals(v)) {
return true;
}
containsValue(node.left, v); // <- search left tree
containsValue(node.right, v); // <- search right tree
return false;
}
これは常にfalseを返します。二return文がデッドコードであるので、私はこれを行うことはできませんしかし
:
return containsValue(node.left, v);
return containsValue(node.left, v);
それでは、どのように私はこの問題を解決するのでしょうか?
これはバイナリ検索ツリーを調べるための**間違った実装です。定義上、バイナリ検索ツリーの値は小さくなります。左に行くほど左に行くほど大きくなり、この方法ではこのプロパティを使用しないため、検索が非効率になります。 –
@nickzoumあなたは大丈夫です!私はすぐに起こった問題を解決し、それが組織化された木であるということに取り組まなかった。私は、OPの変更があなたに受け入れられると、削除するつもりです。 – weston
@Kingamere受け入れられた答えをニックネームに変更してください。 – weston