【发布时间】:2011-10-17 12:07:09
【问题描述】:
我需要深度优先和广度优先遍历顺序的任意树的树遍历算法。棘手的部分是我需要能够从任意节点开始并继续直到遍历另一个特定节点。
现在,我可以使用任何普通算法并忽略遍历的节点,直到我到达开始节点并继续直到结束节点(我目前正在这样做),但这既丑陋又低效。
任何建议,请。
更新:我的每个节点都有一个与之关联的 ID。在某些情况下,我有开始和结束节点引用作为开始。在其他情况下,我有两个 ID,我通过检查它们的 ID 来检查给定节点是开始节点还是结束节点。我使用深度优先遍历来查找起始节点。开始节点和结束节点都可以位于层次结构中的任何位置。我希望有人可以为我已经参考起始节点和结束节点的情况提出一个想法。 BTW,树中的节点实际上是按照排序顺序排序的,一个节点的每个子节点从0开始,并且有一个根节点
【问题讨论】:
-
如何在不遍历树的情况下找到起始节点?
-
您是否已经拥有节点?否则,您需要第二个数据结构来加速查找开始/结束节点。
-
请指定您的树的结构。是否实施了任何排序顺序?节点是如何关联的?
-
他可能正在搜索节点。一旦找到它,他就可以在那里开始 DF Traversal 或 BF Traversal。你是使用 DFS 还是 BFS 来查找起始节点?
-
如果每个节点都作为 ID 为什么不保留一个查找字典来获取该节点?字典
标签: .net algorithm tree-traversal