如何在树中搜索特定节点类

时间:2012-03-15 17:25:41

标签: c# .net data-structures tree trie

我有一棵由Node个对象填充的树。每个节点都有一个存储其子节点的ArrayList,因为可能存在未指定数量的子节点,与二叉树不同。

如果每个节点都有多个子节点,每个节点都有自己的子节点,那么如何遍历树以查找特定节点,依此类推。我只是在寻找迭代执行此操作的通用方法,例如使用搜索节点的arrayList(存储子节点)的函数,以及每个子节点的后续子节点列表。

有什么建议吗?

更新

这是我到目前为止所尝试的:

return 
(
    (StrangeNode)current.ChildrenList
        .SingleOrDefault(c => 
            c.GetType().Name.ToString().Equals("StrangeNode"))
).myArrayList;

2 个答案:

答案 0 :(得分:0)

最明显的两种方式是深度优先搜索和广度优先搜索。您可以通过搜索任何算法教科书或在线查找两者的示例。您可以在3到10行代码中递归地实现该深度优先搜索。

答案 1 :(得分:0)

迭代地你可以这样做:

List<Node> nodes = new List<Node>();
nodes.add( rootnode )

for (int i=0; i < nodes.count; i++)
{

Node currentNode = nodes[i];

//do the processing to check here

nodes.add(currentNode.children) //not 100% sure how to do this, but you get the idea

}

如果你想要它再次完成它只是一个深度优先,非常容易。