题目描述
思路分析
在递归遍历二叉树时,需要考虑当前的节点和它的孩子节点。
如果当前的节点不是叶子节点,则在当前的路径末尾添加该节点,并递归遍历该节点的每一个孩子节点。
如果当前的节点是叶子节点,则在当前的路径末尾添加该节点后,就得到了一条从根节点到叶子节点的路径,可以把该路径加入到答案中。
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func binaryTreePaths(root *TreeNode) []string {
p := []string{}
traversalPaths(root, "",&p)
return p
}
func traversalPaths(root *TreeNode, path string, p *[]string) {
if root != nil {
path += fmt.Sprintf("%d", root.Val)
if root.Left == nil && root.Right == nil {
*p = append(*p, path)
} else {
path += "->"
traversalPaths(root.Left, path, p)
traversalPaths(root.Right, path, p)
}
}
}