public class LowestCommonAncestorFinder<N,E>
extends java.lang.Object
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).
Modifier and Type | Class and Description |
---|---|
static interface |
LowestCommonAncestorFinder.Factory<N,E>
An abstraction for
LowestCommonAncestorFinder::new . |
Constructor and Description |
---|
LowestCommonAncestorFinder(DiGraph<N,E> graph) |
Modifier and Type | Method and Description |
---|---|
com.google.common.collect.ImmutableSet<N> |
findAll(java.util.Set<N> roots)
Execute a search on all the elements of
roots . |
Copyright © 2009-2020 Google. All Rights Reserved.