Skip to content

Commit 2450461

Browse files
aQuaaQua
aQua
authored and
aQua
committed
437 accepted. 39ms > 26ms.
1 parent 83f4e96 commit 2450461

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

Algorithms/0437.path-sum-iii/path-sum-iii.go

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,37 +7,30 @@ import (
77
type TreeNode = kit.TreeNode
88

99
func pathSum(root *TreeNode, sum int) int {
10+
if root == nil {
11+
return 0
12+
}
13+
1014
res := 0
11-
path := []int{}
1215

13-
var dfs func(*TreeNode, int, int)
14-
dfs = func(node *TreeNode, level, sum int) {
16+
var dfs func(*TreeNode, int)
17+
dfs = func(node *TreeNode, sum int) {
1518
if node == nil {
1619
return
1720
}
1821

19-
// 根据 level 来更新 path
20-
if level >= len(path) {
21-
path = append(path, node.Val)
22-
} else {
23-
path[level] = node.Val
24-
}
2522
sum -= node.Val
26-
27-
// 到达 leaf
28-
// 并且,此条路径符合要求
29-
if node.Left == nil && node.Right == nil && sum == 0 {
30-
temp := make([]int, level+1)
31-
// copy 不会复制 path[len(temp):],如果 len(path) > len(temp) 的话
32-
copy(temp, path)
33-
res = append(res, temp)
23+
if sum == 0 {
24+
res++
3425
}
3526

36-
dfs(node.Left, level+1, sum)
37-
dfs(node.Right, level+1, sum)
27+
dfs(node.Left, sum)
28+
dfs(node.Right, sum)
3829
}
3930

40-
dfs(root, 0, sum)
31+
dfs(root, sum)
4132

42-
return res
33+
return res +
34+
pathSum(root.Left, sum) +
35+
pathSum(root.Right, sum)
4336
}

0 commit comments

Comments
 (0)