二叉樹中和爲某一值的路徑
解題思路: 遞歸回溯的解法
1.按照前序方式去遍歷(根,左,右)
2.遞歸處理:
- 忽略空節點
- 遞歸過程中去修改sum的結果,一旦發現等於0同時是根節點則返回結果
- 回溯就是每次先插入當前節點,遞歸完成後刪除
func helper(root *TreeNode , expectNumber int, arr []int, ret *[][]int) { if root == nil { return } arr = append(arr, root.Val) if root.Val == expectNumber && root.Left == nil && root.Right == nil { tmp := make([]int, len(arr)) copy(tmp, arr) *ret = append(*ret, tmp) } helper(root.Left, expectNumber - root.Val, arr, ret) helper(root.Right, expectNumber - root.Val, arr, ret) arr = arr[:len(arr)-1] } func pathSum( root *TreeNode, expectNumber int ) [][]int { if root == nil { return nil } var ret [][]int helper(root, expectNumber, []int{}, &ret) return ret }