我有一個Node結構如下,這個節點有stringdata和節點列表,因爲它是子節點。我想搜索的數據在這個樹 我寫了一個遞歸函數FindNode(節點intree,目標字符串)如何在節點樹中找到節點數據?
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
}
目標就是我想要找的字符串和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);
}
}
}
}
這裏有什麼不起作用?這已經很好了。 – Tigran 2012-04-20 06:47:43
雖然我有錯誤,但並不是所有的路徑都返回一個節點 – 2012-04-20 06:49:25
@NeginNicki你的Children屬性有一個初始值設定項,因此它永遠不會爲null(除非你在某些未發佈的代碼中將它設置爲null)。結果你打開了一個無限循環。 – 2012-04-20 07:03:58