113. Path Sum II
1 问题描述
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
给定一个二叉树与整数sum,找出所有从根节点到叶结点的路径,这些路径上的节点值累加和为sum
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22
,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
Return:
[
[5,4,11,2],
[5,8,4,5]
]
2 c++解答
class Solution{
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> result;
vector<int> path;
int current_value = 0;
preorder(root, current_value, sum, path, result);
return result;
}
private:
void preorder(TreeNode* node, int &path_value, int sum, vector<int> &path, vector<vector<int>> &result) {
if(!node)
return;
path_value += node->val;
path.push_back(node->val);
if(!node->left && !node->right && path_value == sum)
result.push_back(path);
preorder(node->left, path_value, sum, path, result);
preorder(node->right, path_value, sum, path, result);
path_value -= node->val;
path.pop_back();
}
};
继续阅读
- 我的微信小程序
- 这是我的微信小程序扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-
评论