Skip to content

Instantly share code, notes, and snippets.

@tesarwijaya
Created December 8, 2019 12:37
Show Gist options
  • Save tesarwijaya/f4588c5fc1f960e7d0e1f9bdd3671043 to your computer and use it in GitHub Desktop.
Save tesarwijaya/f4588c5fc1f960e7d0e1f9bdd3671043 to your computer and use it in GitHub Desktop.
Tree
package main
import "fmt"
// Node ...
type Node struct {
Data interface{}
Left *Node
Right *Node
}
// DisplayData ...
func (n *Node) DisplayData() {
fmt.Printf("%v ", n.Data)
}
// Tree ...
type Tree struct {
Root *Node
}
// InOrder ...
func (t *Tree) InOrder(n *Node) {
if n != nil {
t.InOrder(n.Left)
n.DisplayData()
t.InOrder(n.Right)
}
}
// PreOrder ...
func (t *Tree) PreOrder(n *Node) {
if n != nil {
n.DisplayData()
t.PreOrder(n.Left)
t.PreOrder(n.Right)
}
}
// PostOrder ...
func (t *Tree) PostOrder(n *Node) {
if n != nil {
t.PostOrder(n.Left)
t.PostOrder(n.Right)
n.DisplayData()
}
}
// InitTree ...
func InitTree(root *Node) *Tree {
return &Tree{
Root: root,
}
}
func main() {
n1 := Node{Data: 1}
n2 := Node{Data: 12}
n3 := Node{Data: 9}
n4 := Node{Data: 5}
n5 := Node{Data: 6}
n1.Left = &n2
n1.Right = &n3
n2.Left = &n4
n2.Right = &n5
t := InitTree(&n1)
fmt.Println("In Order: ")
t.InOrder(t.Root)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment