###题目:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given 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 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
翻译:返回true,因为存在5->4->11->2这样从根节点到叶节点且值之和满足要求的路径。
注意: 叶子是没有孩子的节点。
###思路
这里主要是明确SUM的目标,然后在不断搜索的时候变动SUM (sum - val),直到叶节点进行判断
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool hasPathSum(struct TreeNode* root, int sum) {
if (root == NULL) return false;
else if (root->val == sum && root->left == NULL && root->right == NULL) {
return true;
}
if (hasPathSum(root->left,sum-root->val)) return true;
if (hasPathSum(root->right,sum-root->val)) return true;
return false;
}