LeetCode—112. Path Sum

题目

https://leetcode.com/problems/path-sum/description/
给出一棵二叉树以及一个整数,判断有没有一条从树的根节点到叶子节点的路径,其路径上节点的和等于给出的整数。
LeetCode—112. Path Sum

思路及解法

首先肯定是要用到递归了。
在来想递归条件。每次递归一个节点,都从给出的整数里减去这个节点的值,直到最后一个不为空的叶子节点。
每一个父节点而言,左右两个子节点递归只要有一个满足即可。
若是两个子节点都为空,那么需要判断父节点是否等于最终的结果。
若是遍历到节点本身是空的,说明之前遍历的结果没有返回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);
    }
}

相关文章: