/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
//将每条路径求和,与sum做比较
//怎么求和?如果是array或者arraylist,直接按顺序用循环相加就可以了
//但tree的话,必须通过left或者right来找下一个点的值,所以只能是递归
if(root == null) return false;//if(root == null && sum != null) return false;错,int不可能为null
//上面这句除了针对刚开始情况的空集,还有针对断路,断了就只能return false
if(root.left != null)root.left.val= root.val + root.left.val;
if(root.right != null)root.right.val= root.val + root.right.val;//通过这两行式子将上面的值带给下面
if(root.right == null && root.left == null)//此点是leaf的话就进行判断
{
if(root.val == sum)return true;
return false;
}
return (hasPathSum(root.left, sum) || hasPathSum(root.right, sum));//,不是有一个比较成功就行
// return (hasPathSum(root.right, sum) || hasPathSum(root.right, sum))要仔细!
}
}
/*
Input: {1,2}, 3
Output: false
Expected: true
*/
LeetCode Path Sum
最新推荐文章于 2020-07-07 13:07:47 发布