Package edu.uci.ics.jung.graph
Class DelegateTree<V,E>
- java.lang.Object
-
- edu.uci.ics.jung.graph.GraphDecorator<V,E>
-
- edu.uci.ics.jung.graph.DelegateTree<V,E>
-
- Type Parameters:
V- the vertex typeE- the edge type
- All Implemented Interfaces:
edu.uci.ics.jung.graph.DirectedGraph<V,E>,edu.uci.ics.jung.graph.Forest<V,E>,edu.uci.ics.jung.graph.Graph<V,E>,edu.uci.ics.jung.graph.Hypergraph<V,E>,edu.uci.ics.jung.graph.Tree<V,E>,java.io.Serializable
public class DelegateTree<V,E> extends edu.uci.ics.jung.graph.GraphDecorator<V,E> implements edu.uci.ics.jung.graph.Tree<V,E>An implementation ofTreethat delegates to a specified instance ofDirectedGraph.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Vrootprotected java.util.Map<V,java.lang.Integer>vertex_depths
-
Constructor Summary
Constructors Constructor Description DelegateTree()Creates an instance.DelegateTree(edu.uci.ics.jung.graph.DirectedGraph<V,E> graph)Creates a newDelegateTreewhich delegates tograph.DelegateTree(org.apache.commons.collections4.Factory<edu.uci.ics.jung.graph.DirectedGraph<V,E>> graphFactory)create an instance with passed values.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddChild(E edge, V parent, V child)add the passed child node as a child of parent.booleanaddChild(E edge, V parent, V child, edu.uci.ics.jung.graph.util.EdgeType edgeType)add the passed child node as a child of parent.booleanaddEdge(E edge, java.util.Collection<? extends V> vertices)booleanaddEdge(E e, V v1, V v2)Add an edge to the tree, connecting v1, the parent and v2, the child.booleanaddEdge(E e, V v1, V v2, edu.uci.ics.jung.graph.util.EdgeType edgeType)Add an edge to the tree, connecting v1, the parent and v2, the child.booleanaddVertex(V vertex)Will set the root of the Tree, only if the Tree is empty and the root is currently unset.intgetChildCount(V parent)get the number of children of the passed parent nodejava.util.Collection<E>getChildEdges(V vertex)java.util.Collection<V>getChildren(V parent)get the immediate children nodes of the passed parentintgetDepth(V v)computes and returns the depth of the tree from the root to the passed vertexstatic <V,E>
org.apache.commons.collections4.Factory<edu.uci.ics.jung.graph.Tree<V,E>>getFactory()Returns aFactorythat creates an instance of this graph type.intgetHeight()Computes and returns the height of the tree.intgetIncidentCount(E edge)VgetParent(V child)get the single parent node of the passed childEgetParentEdge(V vertex)java.util.List<V>getPath(V vertex)Returns an ordered list of the nodes beginning at the root and ending atvertex, including all intermediate nodes.VgetRoot()getter for the root of the treejava.util.Collection<edu.uci.ics.jung.graph.Tree<V,E>>getTrees()booleanisInternal(V v)Returnstrueifvis neither a leaf nor the root of this tree.booleanisLeaf(V v)Returnstrueif the passed node has no children.booleanisRoot(V v)computes whether the passed node is a root node (has no children)booleanremoveChild(V orphan)removes a node from the tree, causing all descendants of the removed node also to be removedbooleanremoveVertex(V vertex)remove the passed node, and all nodes that are descendants of the passed node.voidsetRoot(V root)sets the root to the passed value, only if the root is previously unsetjava.lang.StringtoString()-
Methods inherited from class edu.uci.ics.jung.graph.GraphDecorator
addEdge, containsEdge, containsVertex, degree, findEdge, findEdgeSet, getDefaultEdgeType, getDest, getEdgeCount, getEdgeCount, getEdges, getEdges, getEdgeType, getEndpoints, getIncidentEdges, getIncidentVertices, getInEdges, getNeighborCount, getNeighbors, getOpposite, getOutEdges, getPredecessorCount, getPredecessors, getSource, getSuccessorCount, getSuccessors, getVertexCount, getVertices, inDegree, isDest, isIncident, isNeighbor, isPredecessor, isSource, isSuccessor, outDegree, removeEdge
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface edu.uci.ics.jung.graph.Graph
getDest, getEndpoints, getInEdges, getOpposite, getOutEdges, getPredecessorCount, getPredecessors, getSource, getSuccessorCount, getSuccessors, inDegree, isDest, isPredecessor, isSource, isSuccessor, outDegree
-
Methods inherited from interface edu.uci.ics.jung.graph.Hypergraph
addEdge, containsEdge, containsVertex, degree, findEdge, findEdgeSet, getDefaultEdgeType, getEdgeCount, getEdgeCount, getEdges, getEdges, getEdgeType, getIncidentEdges, getIncidentVertices, getNeighborCount, getNeighbors, getVertexCount, getVertices, isIncident, isNeighbor, removeEdge
-
-
-
-
Constructor Detail
-
DelegateTree
public DelegateTree()
Creates an instance.
-
DelegateTree
public DelegateTree(org.apache.commons.collections4.Factory<edu.uci.ics.jung.graph.DirectedGraph<V,E>> graphFactory)
create an instance with passed values.- Parameters:
graphFactory- must create a DirectedGraph to use as a delegate
-
-
Method Detail
-
getFactory
public static final <V,E> org.apache.commons.collections4.Factory<edu.uci.ics.jung.graph.Tree<V,E>> getFactory()
Returns aFactorythat creates an instance of this graph type.- Type Parameters:
V- the vertex type for the graph factoryE- the edge type for the graph factory
-
addEdge
public boolean addEdge(E e, V v1, V v2, edu.uci.ics.jung.graph.util.EdgeType edgeType)
Add an edge to the tree, connecting v1, the parent and v2, the child. v1 must already exist in the tree, and v2 must not already exist the passed edge must be unique in the tree. Passing an edgeType other than EdgeType.DIRECTED may cause an illegal argument exception in the delegate graph.- Specified by:
addEdgein interfaceedu.uci.ics.jung.graph.Graph<V,E>- Overrides:
addEdgein classedu.uci.ics.jung.graph.GraphDecorator<V,E>- Parameters:
e- a unique edge to addv1- the parent nodev2- the child nodeedgeType- should be EdgeType.DIRECTED- Returns:
- true if this call mutates the underlying graph
- See Also:
Graph.addEdge(java.lang.Object, java.lang.Object, java.lang.Object, edu.uci.ics.jung.graph.util.EdgeType)
-
addEdge
public boolean addEdge(E e, V v1, V v2)
Add an edge to the tree, connecting v1, the parent and v2, the child. v1 must already exist in the tree, and v2 must not already exist the passed edge must be unique in the tree.- Specified by:
addEdgein interfaceedu.uci.ics.jung.graph.Graph<V,E>- Overrides:
addEdgein classedu.uci.ics.jung.graph.GraphDecorator<V,E>- Parameters:
e- a unique edge to addv1- the parent nodev2- the child node- Returns:
- true if this call mutates the underlying graph
- See Also:
Graph.addEdge(java.lang.Object, java.lang.Object, java.lang.Object)
-
addVertex
public boolean addVertex(V vertex)
Will set the root of the Tree, only if the Tree is empty and the root is currently unset.- Specified by:
addVertexin interfaceedu.uci.ics.jung.graph.Hypergraph<V,E>- Overrides:
addVertexin classedu.uci.ics.jung.graph.GraphDecorator<V,E>- Parameters:
vertex- the tree root to set- Returns:
- true if this call mutates the underlying graph
- Throws:
java.lang.UnsupportedOperationException- if the root was previously set- See Also:
Hypergraph.addVertex(java.lang.Object)
-
removeVertex
public boolean removeVertex(V vertex)
remove the passed node, and all nodes that are descendants of the passed node.
-
addChild
public boolean addChild(E edge, V parent, V child, edu.uci.ics.jung.graph.util.EdgeType edgeType)
add the passed child node as a child of parent. parent must exist in the tree, and child must not already exist.- Parameters:
edge- the unique edge to connect the parent and child nodesparent- the existing parent to attach the child tochild- the new child to add to the tree as a child of parentedgeType- must be EdgeType.DIRECTED or the underlying graph may throw an exception- Returns:
- whether this call mutates the underlying graph
-
addChild
public boolean addChild(E edge, V parent, V child)
add the passed child node as a child of parent. parent must exist in the tree, and child must not already exist- Parameters:
edge- the unique edge to connect the parent and child nodesparent- the existing parent to attach the child tochild- the new child to add to the tree as a child of parent- Returns:
- whether this call mutates the underlying graph
-
getChildCount
public int getChildCount(V parent)
get the number of children of the passed parent node
-
getChildren
public java.util.Collection<V> getChildren(V parent)
get the immediate children nodes of the passed parent
-
getPath
public java.util.List<V> getPath(V vertex)
Returns an ordered list of the nodes beginning at the root and ending atvertex, including all intermediate nodes.- Parameters:
vertex- the last node in the path from the root- Returns:
- an ordered list of the nodes from root to child
-
getRoot
public V getRoot()
getter for the root of the tree
-
setRoot
public void setRoot(V root)
sets the root to the passed value, only if the root is previously unset- Parameters:
root- the initial tree root
-
removeChild
public boolean removeChild(V orphan)
removes a node from the tree, causing all descendants of the removed node also to be removed- Parameters:
orphan- the node to remove- Returns:
- whether this call mutates the underlying graph
-
getDepth
public int getDepth(V v)
computes and returns the depth of the tree from the root to the passed vertex
-
getHeight
public int getHeight()
Computes and returns the height of the tree.
-
isInternal
public boolean isInternal(V v)
Returnstrueifvis neither a leaf nor the root of this tree.- Returns:
trueifvis neither a leaf nor the root of this tree
-
isLeaf
public boolean isLeaf(V v)
Returnstrueif the passed node has no children.- Returns:
trueif the passed node has no children
-
isRoot
public boolean isRoot(V v)
computes whether the passed node is a root node (has no children)
-
getIncidentCount
public int getIncidentCount(E edge)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-