Implentation of a general tree in Go Programming Language. A general tree is a tree data structure in which each node can have an arbitrary number of children. We are storing children in an array.
Types:
type Node struct
Value interface{}
Children []*Node
}
type GeneralTree struct
Root *Node
}
Functions:
// Create a new general tree
func NewGeneralTree() *GeneralTree
// Create a new node
func NewNode() *Node
Methods:
// Add a new node to the tree
func (t *GeneralTree) AddNode(value interface{})
// Add a new node to the tree
func (t *GeneralTree) AddNodeToParent(value int, parent *Node)
// Get the root node of the tree
func (t *GeneralTree) GetRoot() *Node
// Get the children of a node
func (t *GeneralTree) GetChildren(node *Node) []*Node
// Get the value of a node
func (t *GeneralTree) GetValue(node *Node) interface{}
// Set the value of a node
func (t *GeneralTree) SetValue(node *Node, value interface{})
// Get the number of nodes in the tree
func (t *GeneralTree) GetSize() int
func (t *GeneralTree) getSize(node *Node) int
// Get the height of the tree
func (t *GeneralTree) getHeight() int
func (t *Node) GetHeight(node *Node) int
// Print the tree
func (t *GeneralTree) PrintTree()
func (t *GeneralTree) printTree(node *Node, level int)
package main
import "fmt"
func main()
// Create a new tree
tree := NewGeneralTree()
// Add a root node
tree.Root = &Node{Value: 1}
// Add a node to the root
tree.AddNode(2)
// Add a node to the root
tree.AddNode(3)
// Add a node to the root
tree.AddNode(4)
// Add a node to the root
tree.AddNode(5)
// Add a node to the root
tree.AddNode(6)
// Adding a child to the first node
tree.AddNodeToParent(7, tree.Root.Children[0])
// Adding a child to the first node
tree.AddNodeToParent(8, tree.Root.Children[0])
// Adding a child to the first node
tree.AddNodeToParent(9, tree.Root.Children[0])
// Print the tree
tree.PrintTree()
// Get the size of the tree
fmt.Println("Size of the tree: ", tree.GetSize())
// Get the height of the tree
fmt.Println("Height of the tree: ", tree.getHeight())
// Get the root node
fmt.Println("Root node: ", tree.GetRoot().Value)
// Get the children of the root node
child := tree.GetChildren(tree.Root)
fmt.Println("Children of the root node: ", tree.GetChildren(tree.Root))
for _, c := range child
fmt.Println("\tChildren of the root node: ", c.Value)
}
// Get the value of the root node
fmt.Println("Value of the root node: ", tree.GetValue(tree.Root))
// Set the value of the root node
tree.SetValue(tree.Root, 10)
// Get the value of the root node
fmt.Println("Value of the root node: ", tree.GetValue(tree.Root))
}
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
Copyright (c) 2022, Max Base