#include <memory>
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
bool hasPathSum(TreeNode* root, int sum) {
// write code here
//root为空返回
if(root==nullptr)
return false;
//如果root为叶子结点,判断当前sum是否已经减空,并返回给上一级下面有满足条件的路径
if(root->left==nullptr&&root->right==nullptr)
{
sum-=root->val;
if(sum)
return false;
else
return true;
}
else //如果当前结点不为叶子几点,减去当前val并交给下一级判断
{
bool l=0,r=0;
sum-=root->val;
if(root->left!=nullptr)
{
l=hasPathSum(root->left, sum);
}
if(root->right!=nullptr)
{
r=hasPathSum(root->right, sum);
}
return l==false?r:l;
}
}
};
使用递归的方式解决此题



京公网安备 11010502036488号