2020年7月7日 路径总和 hasPathSum
默认格式:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
}
}
解题思路:
这道题非常简单,使用动态规划和递归就能实现,把每一个父节点的值加到子节点上,,最后如果是叶子节点,就判断是否和值相等。
第一个节点,把值加到左右子节点上。
递归,第二轮
第三轮:
第四轮:由于是叶子节点,直接判断是否是sum
返回true。
代码部分:
public boolean hasPathSum(TreeNode root, int sum) {
if(root==null)
return false;
if(root.left!=null)
{
root.left.val+=root.val;
if (hasPathSum(root.left,sum ))
return true;
}
if(root.right!=null)
{
root.right.val+=root.val;
if (hasPathSum(root.right,sum )) {
return true;
}
}
if (root.left==null&&root.right==null&&root.val==sum){
return true;
}
return false;
}