我有两个树结构,表示目录结构在两个不同时间点的快照。目录可能已在快照之间添加、删除或修改。我需要同时遍历这两棵树,并用两棵树之间的差异标记更新的树,即将节点标记为new、modified、deleted、unchange,添加任何已删除的节点,这样最终的结果就是两个快照的完整超集。
通常,这些树可能有10个深,但非常宽,包含几十万个节点,可能有数百万个节点。我想通过比较每个节点的散列代码来跳过树的大块,并且只在代码不匹配的地方继续递归。
有什么算法可以成为我的朋友吗还有其他建议吗?
最佳答案
想象一下将每个树展开成一个文件和目录的排序列表。一个方法可以从每个展开的树中获取该树的interator的下一个输入。然后我可以比较散列码,在一棵树或另一棵树上向前跳,删除注释,修改注释。
关于algorithm - 如何同时遍历两个任意复杂的树结构并创建超集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2075062/