Not sure if the algorithm existed before or not. I believe all of those algorithms you linked are geared for LCA of two nodes, but I needed an efficient way to get the LCA of a set of nodes. This algorithm should be somewher around O(N * sqrt(H)), where N is the number of tips passed in and H is the height of the tree, but I haven't proven that formally. It was described in the [original doc string](https://github.com/pycogent/pycogent/blob/master/cogent/core/tree.py#L584) though I'm pretty sure I accidentally juggled the H and N there. In general, it'd be great to describe algorithmic complexity and references where feasible but I do not have time right now to rigorously prove the complexity of this algorithm or to determine if this algorithm exists in the literature already