LeetCode—112. Path Sum
题目
https://leetcode.com/problems/path-sum/description/
给出一棵二叉树以及一个整数,判断有没有一条从树的根节点到叶子节点的路径,其路径上节点的和等于给出的整数。
思路及解法
首先肯定是要用到递归了。
在来想递归条件。每次递归一个节点,都从给出的整数里减去这个节点的值,直到最后一个不为空的叶子节点。
每一个父节点而言,左右两个子节点递归只要有一个满足即可。
若是两个子节点都为空,那么需要判断父节点是否等于最终的结果。
若是遍历到节点本身是空的,说明之前遍历的结果没有返回true,所以到这里就返回false
代码
/**
* 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) {
if(root == null) return false;
if(root.left==null && root.right==null){
return root.val==sum;
}
return hasPathSum(root.left, sum-root.val)
|| hasPathSum(root.right, sum-root.val);
}
}