本文目录#
算法思路#
Binary Lifting 通过预处理 up[k][v]
表示节点 v 向上跳 2^k 层的祖先,以 O(log N) 时间回答 LCA 查询。预处理复杂度 O(N log N)。
预处理#
1 | class LCA { |
扩展#
- 支持求第 k 个祖先;
- 结合差分与前缀处理路径问题(如路径和/权值统计);
- 在动态图中可配合重链剖分或 Link-Cut Tree。
自检清单#
- 是否正确初始化根节点的祖先(
up[0][root] = root
)? - 是否处理深度差和跳跃过程中的边界?
- 是否根据树规模合理选择 LOG?
参考资料#
- CP-Algorithms LCA:https://cp-algorithms.com/graph/lca_binary_lifting.html
- MIT OCW 6.006 Tree Algorithms 讲义
- Competitive Programming 4 LCA 章节
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。