摘要: 【简介】 解决LCA问题的倍增法是一种基于倍增思想的在线算法。【原理】 原理和同样是使用倍增思想的RMQ-ST 算法类似,比较简单,想清楚后很容易实现。 对于每个节点u , ancestors[u][k] 表示 u 的第2k个祖先是谁。很容易就想到递推式:ancestors[j][i]=ancestors[ancestors[j][i-1]][i-1]; 根据二进制原理,理论上 u 的所有祖先都可以根据ancestors数组多次跳转得到,这样就间接地记录了每个节点的祖先信息。 查询LCA(u,v)的时候: (一)u和v所在的树的层数如果一样,令u'=u。否则需要平衡操作(假设u更深), 阅读全文
posted @ 2014-01-24 14:25 wuminye 阅读(2012) 评论(0) 推荐(0) 编辑