Skip to content

Commit

Permalink
Add inorder, preorder, postorder traversal in Binary Tree
Browse files Browse the repository at this point in the history
  • Loading branch information
ua-nick committed May 16, 2018
1 parent 074ec78 commit b590be1
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions BinaryTree/BinaryTree.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,32 @@ func (tree *BinaryTree) SearchItem(i int) (*Node, bool) {
return nil, false
}

func (tree *BinaryTree) GetItems(subtree *Node, callback func(int)) {
func (tree *BinaryTree) InorderTraversal(subtree *Node, callback func(int)) {
if subtree.left != nil {
tree.GetItems(subtree.left, callback)
tree.InorderTraversal(subtree.left, callback)
}
callback(subtree.data)
if subtree.right != nil {
tree.GetItems(subtree.right, callback)
tree.InorderTraversal(subtree.right, callback)
}
}

func (tree *BinaryTree) PreorderTraversal(subtree *Node, callback func(int)) {
callback(subtree.data)
if subtree.left != nil {
tree.PreorderTraversal(subtree.left, callback)
}
if subtree.right != nil {
tree.PreorderTraversal(subtree.right, callback)
}
}

func (tree *BinaryTree) PostorderTraversal(subtree *Node, callback func(int)) {
if subtree.left != nil {
tree.PostorderTraversal(subtree.left, callback)
}
if subtree.right != nil {
tree.PostorderTraversal(subtree.right, callback)
}
callback(subtree.data)
}

0 comments on commit b590be1

Please sign in to comment.