本文学习自:Alex_Wei 的博客 首先遍历一遍整棵树,可以得到整棵树的 DFS 序和每个点的时间戳(记为dfndfn)。 考虑两个点u,vu,v,求这两个点的 LCA 。不妨设dfnu<dfnvdfnu
冷门科技 —— DFS 序求 LCA - By Alex_Wei__EOF__ 本文作者: superl61 本文链接: https://www.cnblogs.com/superl61/p/18429819 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您...
写在最后(摘自 Alex-Wei 的博客)对比DFS 序和欧拉序,不仅预处理的时间常数砍半(欧拉序 LCA 的瓶颈恰好在于预处理,DFS 是线性),空间常数也砍半(核心优势),而且还更好写(对于一些题目就不需要再同时求欧拉序和 DFS 序了),也不需要担心忘记开两倍空间,可以说前者从各个方面吊打后者。 对比DFS 序和倍增,前者...
Update on 2023.7.17:比较时,取时间戳较小的结点也是正确的,不用记录深度。 DFS 序求 LCA 无论是从时间常数,空间常数还是好写程度方面均吊打欧拉序。 定义 DFS 序表示对一棵树进行深度优先搜索得到的结点序列,而时间戳DFN 表示每个结点在 DFS 序中的位置。这两个概念需要着重区分。 算法介绍 考虑树上的两个...