Directed Trees#

In the following functions, the graph is assumed to be a directed tree. This means it is a tree containing a root vertex and all edges are directed away from that vertex.

IsRootedTree(G): GrphDir -> BoolElt, GrphVert#

Returns true exactly when the directed graph \(G\) is a tree having a vertex \(v\) such that all edges are directed away from \(v\). In this case, the root vertex \(v\) is returned as a second value.

Root(G): GrphDir -> GrphVert#

The root vertex of a rooted tree.

IsRoot(v): GrphVert -> BoolElt#

Returns true if and only if the graph containing the vertex \(v\) is directed as a rooted tree with \(v\) as root.

RootSide(v): GrphVert -> GrphVert#

When the graph containing the vertex \(v\) is directed as a rooted tree, this returns the unique neighbouring vertex to \(v\) which is closer to the root vertex. If \(v\) is the root vertex, it is returned itself.

VertexPath(u, v): GrphVert, GrphVert -> SeqEnum#

A sequence of vertices comprising a path in a directed graph from the vertex \(u\) to the vertex \(v\). The path does not necessarily respect the edge directions. Indeed it will first trace back to a common ancestor of \(u\) and \(v\) and then follow edge directions to \(v\).

BranchVertexPath(u, v): GrphVert, GrphVert -> SeqEnum#

The sequence of vertices on the vertex path from the vertex \(u\) to the vertex \(v\) having valency at least \(3\).