LCA
背景
最近由于学习图和树,lca用的多了起来,临时复习一下树上的各种图论算法
LCA
最经典的树上图论题了,给定一个树,求任意两个点的最近公共祖先,也就是对于两个点所有祖先里面离根节点最远祖先
朴素算法lca
首先先记录下每个点的深度,两个点一直往上走直到找到共同祖先
倍增lca
倍增算法基于朴素算法思想,由于任何一个数都可以二进制分解,把每次向上1位改为向上2的k次方位,以p[u][k]来存储u的第2的k次方位的祖先
最近由于学习图和树,lca用的多了起来,临时复习一下树上的各种图论算法
最经典的树上图论题了,给定一个树,求任意两个点的最近公共祖先,也就是对于两个点所有祖先里面离根节点最远祖先
首先先记录下每个点的深度,两个点一直往上走直到找到共同祖先
倍增算法基于朴素算法思想,由于任何一个数都可以二进制分解,把每次向上1位改为向上2的k次方位,以p[u][k]来存储u的第2的k次方位的祖先