博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LCA算法的理解
阅读量:6358 次
发布时间:2019-06-23

本文共 303 字,大约阅读时间需要 1 分钟。

LCA思想:在求解最近公共祖先为问题上,用到的是Tarjan的思想,从根结点开始形成一棵深搜树,非常好的处理技巧就是在回溯到结点u的时候,u的子树已经遍历,这时候才把u结点放入合并集合中,这样u结点和所有u的子树中的结点的最近公共祖先就是u了,u和还未遍历的所有u的兄弟结点及子树中的最近公共祖先就是u的父亲结点。以此类推。。这样我们在对树深度遍历的时候就很自然的将树中的结点分成若干的集合,两个集合中的所属不同集合的任意一对顶点的公共祖先都是相同的,也就是说这两个集合的最近公共最先只有一个。对于每个集合而言可以用并查集来优化,时间复杂度就大大降低了,为O(n + q),n为总结点数,q为询问结点对数。

转载地址:http://skbma.baihongyu.com/

你可能感兴趣的文章
数论 + 公式 - HDU 4335 What is N?
查看>>
Public Prize
查看>>
生成 39 条形码
查看>>
抽象工厂理解
查看>>
计网第四章网络层(二)
查看>>
vs 行数
查看>>
nodejs下的express安装
查看>>
表单中的单文件点击和拖拽上传
查看>>
BZOJ1396 识别子串
查看>>
【转】numpy中 meshgrid 和 mgrid 的区别和使用
查看>>
【转】python中的闭包
查看>>
编程总结模版
查看>>
成为linux的合格公民
查看>>
小心陷阱:二维动态内存的不连续性
查看>>
转:关于启用 HTTPS 的一些经验分享(一)
查看>>
复习HTML、CSS、JS练习题
查看>>
[Android] 进程(Process)和线程(Thread)
查看>>
STL容器及泛型算法
查看>>
Android 检查手机和电脑连接的时候,执行 adb devices后,提示adb server is out of date. killing.....
查看>>
Django---分页器、中间件
查看>>