# unfold.tree

From igraph v0.5.1
by Gabor Csardi

##### Convert a general graph into a forest

Perform a breadth-first search on a graph and convert it into a tree or forest by replicating vertices that were found more than once.

- Keywords
- graphs

##### Usage

`unfold.tree(graph, mode = c("all", "out", "in", "total"), roots)`

##### Arguments

- graph
- The input graph, it can be either directed or undirected.
- mode
- Character string, defined the types of the paths used for
the breadth-first search.
out follows the outgoing,in the incoming edges,all andtotal both of them. This argument - roots
- A vector giving the vertices from which the breadth-first search is performed. Typically it contains one vertex per component.

##### Details

A forest is a graph, whose components are trees.
The `roots`

vector can be calculated by simply doing a
topological sort in all components of the graph, see the examples
below.

##### Value

- A list with two components:
tree The result, an `igraph`

object, a tree or a forest.vertex_index A numeric vector, it gives a mapping from the vertices of the new graph to the vertices of the old graph.

##### concept

- Tree
- Forest
- Breadth-first search

##### Examples

```
g <- graph.tree(10)V(g)$id <- seq_len(vcount(g))-1
roots <- sapply(decompose.graph(g), function(x) {
V(x)$id[ topological.sort(x)[1]+1 ] })
tree <- unfold.tree(g, roots=roots)
```

*Documentation reproduced from package igraph, version 0.5.1, License: GPL (>= 2)*

### Community examples

Looks like there are no examples yet.