题目描述
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。
叶子节点 是指没有子节点的节点。
题解
本题使用递归深度优先遍历树 的解法,先递归左子树是否为真,再递归右子树是否为真,如果任意子树为真则为true,否则为false
class Solution {
public:
bool hasPathSum(TreeNode* root, int targetSum) {
if(root==NULL)
return false;
if(root->val==targetSum&&root->left==NULL&&root->right==NULL) //如果是根节点并且节点值为targetSum
return true;
if(hasPathSum(root->left,targetSum-(root->val))) //访问左子树
return true;
else if(hasPathSum(root->right,targetSum-(root->val))) //访问右子树
return true;
else return false;
}
};