我有一棵由Node
个对象填充的树。每个节点都有一个存储其子节点的ArrayList,因为可能存在未指定数量的子节点,与二叉树不同。
如果每个节点都有多个子节点,每个节点都有自己的子节点,那么如何遍历树以查找特定节点,依此类推。我只是在寻找迭代执行此操作的通用方法,例如使用搜索节点的arrayList(存储子节点)的函数,以及每个子节点的后续子节点列表。
有什么建议吗?
更新
这是我到目前为止所尝试的:
return
(
(StrangeNode)current.ChildrenList
.SingleOrDefault(c =>
c.GetType().Name.ToString().Equals("StrangeNode"))
).myArrayList;
答案 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
}
如果你想要它再次完成它只是一个深度优先,非常容易。