#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; } } };
使用递归的方式解决此题