Overview
In the preorder traversal of a binary tree, we follow the below order
- Visit Root
- Vist Left Subtree
- Visit Right Subtree
For example, let’s say we have below binary tree
Then preorder traversal would be
[1 2 4 3 5 6]
Program
Here is the program for the same
package main
import (
"fmt"
)
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func preorderTraversal(root *TreeNode) []int {
if root == nil {
return nil
}
left := preorderTraversal(root.Left)
right := preorderTraversal(root.Right)
output := make([]int, 0)
output = append(output, root.Val)
output = append(output, left...)
output = append(output, right...)
return output
}
func main() {
root := TreeNode{Val: 1}
root.Left = &TreeNode{Val: 2}
root.Left.Left = &TreeNode{Val: 4}
root.Right = &TreeNode{Val: 3}
root.Right.Left = &TreeNode{Val: 5}
root.Right.Right = &TreeNode{Val: 6}
output := preorderTraversal(&root)
fmt.Println(output)
}
Output
[1 2 4 3 5 6]