【发布时间】:2012-04-20 15:34:07
【问题描述】:
我有一个如下的节点结构,这个节点有字符串数据和节点列表作为它的子节点。我想在这棵树中搜索一个数据 我写了一个递归函数 FindNode(Node intree,string target)
public class Node
{
public string Data;
public List<Node> Children = new List<Node>();
//some code
public Node(string r)
{
this.Data = r;
}
public string getData()
{
return this.Data;
}
//some code
public List<Node> getchildren()
{
return this.Children;
}
//some code
}
target 是我要查找的字符串,intree 是树的开头(ROOT) 在while循环之后我有问题在那之后我应该返回什么? 如果写错了怎么写?
public Node FindNode(Node intree,string target)
{
if(intree.getData()==target)
return intree;
else
{
while(intree.getchildren()!=null)
{
foreach(Node n in intree.getchildren())
{
FindNode(n,target);
}
}
}
}
【问题讨论】:
-
什么在这里不起作用?已经很好了。
-
虽然我有错误,但并非所有路径都返回一个节点
-
@NeginNicki 您的 Children 属性上有一个初始化程序,因此它永远不会为 null(当然,除非您在某些未发布的代码中将其设置为 null)。结果,您将自己打开一个无限循环。
-
是的,你是绝对正确的,我也没有在我的代码中设置孩子为空