Documentation
¶
Overview ¶
Tree ¶
A generic unbalanced tree implementation, where you can define which node will be added to each node.
## Installation
* With `go get`:
```bash go get -u github.com/johnfercher/tree ```
## Example
```golang package main
import (
"fmt" "github.com/johnfercher/tree/pkg/tree"
)
// nolint:gomnd,gocritic
func main() {
tr := tree.New[string]()
tr.AddRoot(tree.NewNode(0, "0.0"))
tr.Add(0, tree.NewNode(1, "0.1"))
tr.Add(0, tree.NewNode(2, "0.2"))
tr.Add(1, tree.NewNode(3, "1.3"))
tr.Add(1, tree.NewNode(4, "1.4"))
tr.Add(2, tree.NewNode(5, "2.5"))
tr.Add(2, tree.NewNode(6, "2.6"))
root, ok := tr.GetRoot()
fmt.Println(ok) // true
fmt.Println(root.Get()) // 0, 0.0
node, ok := tr.Get(3)
fmt.Println(ok) // true
fmt.Println(node.Get()) // 3, 1.3
structure, ok := tr.GetStructure()
fmt.Println(ok) // true
fmt.Println(structure) // (NULL) -> (0), (0) -> (1), (1) -> (3), (1) -> (4), (0) -> (2), (2) -> (5), (2) -> (6)
nodes, ok := tr.Backtrack(6)
fmt.Println(ok) // true
for _, node := range nodes {
fmt.Println(node.Get()) // 6, 2.6; 2, 0.2; 0, 0.0
}
}
```
Click to show internal directories.
Click to hide internal directories.