我感兴趣的是在一棵树中找到两个节点的距离,以尽可能少的复杂性。查找过程在树上的一些查询和更新中(添加和删除一个节点)。
该问题可以用LCA作为优化的工具。然而,通过这些帖子,我发现有一些算法可用。
https://cp-algorithms.com/graph/lca.html https://cp-algorithms.com/graph/lca_binary_lifting.html
这是总结,
预处理时间: O(N)
查询时间: O(√N)
允许更新树:是
预处理时间: O(N)
查询时间: O(log )
允许更新树:是
预处理时间: O(N log N)
查询时间: O(1)
允许更新树:No
预处理时间: O(N log N)
查询时间: O(log )
允许更新树:是
我的问题是,最好的算法是什么?
或者哪种算法最适合在什么条件下使用?
对于每一种算法,是否还有上述没有提到的其他优点或缺点?
发布于 2021-11-07 11:15:25
根据个人作为有竞争力的程序员的经验:
也相当快。
https://stackoverflow.com/questions/69871496
复制相似问题