描述
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径
,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
注意点:
必须联通到叶节点
分析
从根节点开始,每当遇到一个节点的时候,从目标值里扣除节点值,一直到叶子节点判断目标值是不是被扣完。
解答
bool hasPathSum(struct TreeNode *root, int sum) {
if (root == NULL) {
return false;
}
sum -= root->val;
if (root->left == NULL && root->right == NULL) {
return sum == 0;
} else {
return hasPathSum(root->left, sum) || hasPathSum(root->right, sum);
}
}