繁体   English   中英

最快的树遍历

[英]Fastest tree traversal

我有一个相当大的树数据结构,它将得到更新(删除和添加节点等)。 我必须使用广度优先方法遍历树,以访问所有节点(达到一定的广度深度,例如7)并将其放到列表中。 然后,一个函数将遍历节点,如果在列表中找到信息,则返回true。

这需要大量时间才能遍历节点。 我不认为我应该将每个单个节点与每个单个子节点映射,然后使用Dictionary提取该节点并(递归地)获取其所有子节点。 我应该怎么做? 最快的方法是像彼此之间映射所有节点

Dictionary<Node, List<Node>>

  • 节点,列出所有子节点(包括子节点的孩子...),然后拉出节点并快速获得其2,000个子节点。 但是,如果在任何位置添加或删除节点,则所有字典节点都需要更新(这似乎很麻烦)。 另一种方法是在运行期间动态遍历它(这需要时间)。 这是在生成树的开始阶段或在运行时循环时将所有内容映射在一起的问题。

处理这种情况的最佳方法是什么? 任何想法,指针,评论或任何事情都是有帮助的。 当前,此操作大约需要程序运行时间的25%。

如果您只是在评估谓词,则可以在遍历树时直接执行该谓词,而不必先将整个树放入列表中-除非您缓存列表。 直接在树节点上评估谓词,可以在首次找到您感兴趣的信息时尽早短路/停止遍历。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM