112. Path Sum
1.有点回溯的感觉,试完左树试右树。
2.注意叶子节点的判断条件
3.root=NULL,sum=0时也要返回false。
class HasPathSum {
public:
bool hasPathSum(TreeNode* root, int sum)
{
if (root == NULL)
{
return false;
}
pathSum = 0;
return hasPathSumCore(root, sum);
}
bool hasPathSumCore(TreeNode* root, int sum) {
if (root->left == NULL && root->right == NULL)
{
pathSum += root->val;
if (sum == pathSum)
{
return true;
}else
{
pathSum -= root->val;
return false;
}
}
pathSum += root->val;
bool left = false;
bool right = false;
if (root->left != NULL)
{
left = hasPathSumCore(root->left, sum);
}
if (!left && root->right != NULL)
{
right = hasPathSumCore(root->right, sum);
}
if (left || right)
{
return true;
}
pathSum -=root->val;
return false;
}
int pathSum;
};