123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package main
- func pathSum(root *TreeNode, sum int) [][]int {
- result := make([][]int, 0)
- path := make([]int, 0)
- pathSumHelper(&result, &path, root, sum)
- return result
- }
- func pathSumHelper(result *[][]int, path *[]int, root *TreeNode, sum int) {
- if root == nil {
- return
- }
- *path = append(*path, root.Val)
- if root.Left == nil && root.Right == nil && root.Val == sum {
- newPath := make([]int, len(*path))
- copy(newPath, *path)
- *result = append(*result, newPath)
- }
- pathSumHelper(result, path, root.Left, sum-root.Val)
- pathSumHelper(result, path, root.Right, sum-root.Val)
- *path = (*path)[:len(*path)-1]
- }
|