Overview
The root of a tree is given. The objective is to print all the tree paths starting with the root.
Example
Output:
1->2->4
1->3->5
1->3->6
Program
Below is the program for the same
package main
import (
"fmt"
"strconv"
)
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func binaryTreePaths(root *TreeNode) []string {
output := make([]string, 0)
binaryTreePathsUtil(root, "", &output)
return output
}
func binaryTreePathsUtil(root *TreeNode, curr string, output *[]string) {
if root == nil {
return
}
valString := strconv.Itoa(root.Val)
if curr == "" {
curr = valString
} else {
curr = curr + "->" + valString
}
if root.Left == nil && root.Right == nil {
*output = append(*output, curr)
return
}
binaryTreePathsUtil(root.Left, curr, output)
binaryTreePathsUtil(root.Right, curr, 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 := binaryTreePaths(&root)
fmt.Println(output)
}
Output:
[1->2->4 1->3->5 1->3->6]
Also, check out our system design tutorial series here – System Design Tutorial Series