Skip to content
On this page

257. Binary Tree Paths share

Problem Statement

Given the root of a binary tree, return all root-to-leaf paths in any order.

A leaf is a node with no children.

 

Example 1:

Input: root = [1,2,3,null,5]
Output: ["1->2->5","1->3"]

Example 2:

Input: root = [1]
Output: ["1"]

 

Constraints:

  • The number of nodes in the tree is in the range [1, 100].
  • -100 <= Node.val <= 100

Solution:

go
package main

import "fmt"

// Definition for a binary tree node.
type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

func binaryTreePaths(root *TreeNode) []string {
	if root == nil {
		return nil
	}

	paths := make([]string, 0)

	// if root is leaf node
	if root.Left == nil && root.Right == nil {
		paths = append(paths, fmt.Sprint(root.Val))
		return paths
	}

	// traverse left subtree and append root value
	for _, path := range binaryTreePaths(root.Left) {
		paths = append(paths, fmt.Sprint(root.Val, "->", path))
	}

	// traverse right subtree and append root value
	for _, path := range binaryTreePaths(root.Right) {
		paths = append(paths, fmt.Sprint(root.Val, "->", path))
	}

	return paths
}

...


Released under the MIT License.