Algorithm found on Wikipedia :
function TarjanOLCA(u) MakeSet(u); u.ancestor := u; for each v in u.children do TarjanOLCA(v); Union(u,v); Find(u).ancestor := u; u.colour := black; for each v such that {u,v} in P do if v.colour == black print "Tarjan Least Common Ancestor of " + u + " and " + v + " is " + Find(v).ancestor + ".";
source share