题目
判断二叉树上存不存在一条值为某个数的路径
思路
这道题交了两遍才过,其实还是思路的问题,之前竟然用root是不是为NULL来判断叶子节点,寒。后面重写了一遍,要注意的是如果左子树没有找到一个值的话才需要递归二叉树。
代码
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool hasPathSum(TreeNode * root ,int sum)
{
int cur_sum=0;
if (root==NULL) return false;
return check(root, sum ,cur_sum);
}
bool check(TreeNode *root, int sum ,int cur_sum) //代码风格不好,建树的过程要写一写
{
cur_sum = cur_sum + root->val;
if (root->left==NULL && root->right==NULL)//到达叶子节点
return cur_sum==sum;
bool flag1=false,flag2=false;
if (root->left!=NULL) flag1=check(root->left,sum,cur_sum);
if(!flag1 && root->right!=NULL) flag2 =check(root->right,sum,cur_sum);
return flag1 || flag2;
}
};