给你二叉树的根节点 root
和一个表示目标和的整数 targetSum
,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum
。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22 输出:true
bool isleef(struct TreeNode* root){
if(!root)
return false;
if(root->left==NULL&&root->right==NULL)
return true;
return false;
}
bool hasPathSum(struct TreeNode* root, int targetSum){
if(!root) return false;
int tmp = targetSum-root->val;
if(isleef(root)){//确定是否是叶子
if(tmp!=0)return false; //递归出口
return true;
}
return hasPathSum(root->left,tmp)+hasPathSum(root->right,tmp);//逐渐减去每个根的val
}