私はツリーの検索アルゴリズムを書こうとしていますが、私はひっくり返っています。再帰関数を使用していますが、再帰部分にエラーがあります。あなたはデバッグ時にそれを見つけることができます。ツリー内でアルゴリズムを検索する
private Node SeachNode(Node node, IComparable value)
{
if (node == null) return null;
int comp = value.CompareTo(node.Letter.LetterName);
if (comp == 0) return node; //Found it
if (comp < 0) SeachNode(node.Left, value); //The item must be in the left subtree
return SeachNode(node.Right, value); // The item must be in the right subtree
}
このコードでは、私はツリー内で自分の価値を見つけようとしています。たとえば、私はツリー内の "ACD"ノードを検索したい、私はルートから検索を開始する。 rootがnullの場合は終了します。そうではない、それを比較してください。 rootが応答しない場合は、rootを返します。比較結果が-1を返す場合、ルートの左をチェックします。しかし、コードはルートの右には行きません。私はそれが帰りの声明のために行くことはないと思います。
はあなたが後方検索結果を伝播するためには、両方の左と右に、各再帰呼び出しの値を返すためにreturn
ステートメントを使用する必要があります:)
[MCVE]ガイダンスを読み、問題を示す適切なサンプルを提供してください。これまでに投稿したコードには特に問題はありません。 –