从C#中的任意节点开始遍历一般树结构

Kem*_*gan 6 .net algorithm tree-traversal

我需要在Depth-first和Breadth-first Traversal顺序中对任意树进行树遍历算法.棘手的部分是我需要能够从任意节点开始并继续直到遍历另一个特定节点.

现在,我可以使用任何普通的算法并忽略遍历的节点,直到我点击起始节点并继续直到结束节点(我现在这样做),但这是丑陋和低效的.

请给我任何建议.

更新:我的每个节点都有一个与之关联的id.在某些情况下,我有开始和结束节点引用.在其他情况下,我有两个ID,我通过检查它们的ID来检查给定节点是起始节点还是结束节点.我使用深度优先遍历来查找起始节点.开始和结束节点都可以位于层次结构中的任何位置.我希望有人可以提出一个想法,我已经给出了对起始节点和终端节点的引用.顺便说一下,树中的节点实际上是按照排序顺序排序的,排序顺序从节点的每个子节点的0开始,并且有一个根节点

Dar*_*der 2

我认为你正在做的事情是最有效的方法。特别是当您使用任意树时。

给定一棵任意树,您需要找到开始遍历的节点。由于没有层次结构(即:它不是二叉树),因此您必须扫描节点(如果给定节点是叶节点或者该节点不在您想要的树中,则最终可能会扫描一半以上的节点)必须搜索整个树)直到找到开始的节点。一旦找到节点,就可以开始 DF 遍历或 BF 遍历。

我看不到你可以做任何优化。