树中的搜索算法

时间:2016-11-19 21:22:14

标签: c# algorithm tree

我正在尝试为我的树写一个搜索算法,但是我被困了。我正在使用递归函数,但递归部分有错误。您可以在调试时找到它。

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,则检查root的左侧。但是代码并不是root用户的权利。我想它不会因为return语句而去。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

您需要使用return语句返回每个递归调用的值,包括向左和向右,以便向后传播搜索结果。

if (comp == 0) return node; //Found it
if (comp < 0) return 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