給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:給定如下二叉樹,以及目標和 sum = 22,
5
/ \4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
返回:
[[5,4,11,2],
[5,8,4,5]
]思路:先序遍歷。每遍歷乙個結點就將其值加入路徑陣列path中,並更新路徑和path_sum,當遍歷到葉子節點時,檢查path_sum是否等於sum,等於的話,就將其path加入路徑陣列result中。在向上層回溯時要將當前節點的值從path中拿出,並更新path_sum。
#include
#include
using
namespace std;
struct treenode };
class
solution
void
preorder
(treenode *node,
int sum)
path.
push_back
(node-
>val)
; path_sum +
= node-
>val;
if(node-
>left ==
null
&& node-
>right ==
null
&& path_sum == sum)
preorder
(node-
>left,sum)
;preorder
(node-
>right,sum)
;//向上層回溯時,要將當前節點的值從path中拿出,並更新path_sum
path.
pop_back()
; path_sum -
= node-
>val;}}
;int
main()
cout<}return0;
}
leetcode 113 路徑之和
給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 思路 二叉樹的深度優先遍歷,在遍歷的過程中記錄當前...
leetcode 113 路徑總和 II
題目描述 給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 class solution void h...
leetcode113 路徑總和 II
參考自 這位博主!給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 解題思路 主要思路就是深搜。但是要...