题目描述
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/
2 3
5
输出: [“1->2->5”, “1->3”]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
解题思路
- 前序遍历,每一层保存该层节点
- 如果遇到叶子节点就将该路径保存并回溯
- 传入数组指针用来保存最终结果
代码实现
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func binaryTreePaths(root *TreeNode) []string {
var res []string
dfs(root, "", &res)
return res
}
func dfs(root *TreeNode, path string, res *[]string) {
if root == nil {
return
}
path += strconv.Itoa(root.Val)
if root.Left == root.Right {
*res = append(*res, path)
return
}
dfs(root.Left, path+"->", res)
dfs(root.Right, path+"->", res)
}