Class LowestCommonAncestorFinder<N,E>
java.lang.Object
com.google.javascript.jscomp.graph.LowestCommonAncestorFinder<N,E>
Implements a lowest common ancestor search algorithm.
The LCA of a set of nodes is the node that is an ancestor to all of them but is not an ancestor of any other common ancestor. In a non-tree, There may be multiple LCAs for a given set of search nodes.
In a cyclic graph, the LCAs may not be well defined. Within a cycle, all elements are both above and below one another, so there is no uniquely lowest element. If the set of common ancestors is rooted on a cycle, this implementation returns one or more elements of that cycle. Those elements are chosen arbitrarily but deterministically (as long as the underlying graph has deterministic iteration).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
An abstraction forLowestCommonAncestorFinder::new
. -
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
LowestCommonAncestorFinder
-
-
Method Details
-
findAll
Execute a search on all the elements ofroots
.This is a general-purpose, bare-bones implementation. There are lots of special case optimizations that could be applied.
-