LeetCode 113. Path Sum II
Description:
Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum.
Example:
For example:
Given the below binary tree and sum = 22,
1
2
3
4
5
6
7 5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
return
1
2
3
4 [
[5,4,11,2],
[5,8,4,5]
]
分析:
如果采用栈去深度优先遍历解决,难度是比较大的,Discuss上面有一种解法采用了一个一维数组vector来存储一条路径,如果找到一条路径上的和等于sum的话,就将这个一维数组添加到二维数组中去。
同样,代码首先判断根节点是否为空,为空直接返回空二维数组。
不空时,将根节点加入到一维数组path中,然后判断左右子树是否为空,为空时判断根节点的数是否等于sum,若为真返回该path(只有根节点:一个节点一条路径)。
若左右子树不空时,递归左右子树。
注意最后有个路径回溯
path.pop_back();
代码如下:
1 |
|