給定二叉樹根節點和目標和 sum,找出所有從根到葉子節點路徑節點值之和等于 sum 的路徑。
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
sum = 22
輸出:[[5,4,11,2], [5,8,4,5]]
path 和結果集 pathspathpath 彈出值class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> paths;
vector<int> path;
dfs(root, sum, paths, path);
return paths;
}
private:
void dfs(TreeNode* node, int sum,
vector<vector<int>>& paths,
vector<int>& path) {
if (!node) return;
path.push_back(node->val);
if (!node->left && !node->right && node->val == sum)
paths.push_back(path);
dfs(node->left, sum - node->val, paths, path);
dfs(node->right, sum - node->val, paths, path);
path.pop_back();
}
};
