/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @param sum int整型 * @return bool布尔型 */ //方法:深度优先遍历DFS,sum的值不断减去各路径节点的值,找到合适路径的条件是:sum的值为0且节点的左右子树为空 //1、判空树,是返回false,否则进行下一步 //2、sum减去根节点的值,sum的值更新 //3、判断sum的值为0且节点的左右子树为空,返回true,否则进行下一步 //4、用递归方法:不断深度遍历左或右子树,即重复嵌套上面步骤 bool hasPathSum(struct TreeNode* root, int sum ) { // write code here //1、判空树,是返回false,否则进行下一步 if(!root) { return false; } //2、sum减去根节点的值,sum的值更新 sum = sum - root->val; //3、判断sum的值为0且节点的左右子树为空,返回true,否则进行下一步 if (sum == 0 && root->left == NULL && root->right == NULL) { return true; } //4、用递归方法:不断深度遍历左或右子树,即重复嵌套上面步骤 return hasPathSum(root->left, sum) || hasPathSum(root->right, sum); }