【Leetcode专题[二叉树]-257-二叉树的所有路径】力扣链接:
https://leetcode-cn.com/probl...
解题思路:
- 二叉树的所有路径,这里其实是DFS深度优先遍历,需要从跟节点遍历,直到遇到字节点,为一个路径
- 递归前序遍历,递归三部曲:(1)传入参数:这里传入的参数是每个节点,初始化为根节点 (2)结束条件:当某个节点的左右子树均为空时即为一次结果 (3)单次遍历规则:由于是DFS,所以可以使用前序遍历
// 递归法
func binaryTreePaths(root *TreeNode) []string {
res := []string{}
var traver func(node *TreeNode, s string)
traver = func(node *TreeNode, s string) {
if node.Left == nil && node.Right == nil {
s = s + strconv.Itoa(node.Val)
res = append(res, s)
return
}
s = s + strconv.Itoa(node.Val) + "->"
if node.Left != nil {
traver(node.Left, s)
}
if node.Right != nil {
traver(node.Right, s)
}
}
traver(root, "")
return res
}
推荐阅读
- 【第三十五期】校招golang工程师面经 华为
- 【第三十四期】Golang社招面经-快手
- 【Go进阶—并发编程】Context
- Leetcode专题[二叉树]-十连杀-二叉树的层序遍历
- console打印动态进度条
- 【Go进阶—并发编程】WaitGroup
- 【第三十二期】春招 Golang实习面经 七牛
- Golang|Golang 小数操作之判断几位小数点与四舍五入
- Golang|Golang []int []string 互转与判断字符是否在数组中