我正在尝试为我的树写一个搜索算法,但是我被困了。我正在使用递归函数,但递归部分有错误。您可以在调试时找到它。
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语句而去。
感谢您的帮助:)
答案 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