Leetcode: Path Sum

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.



For example:

Given the below binary tree and sum = 22,

              5

             / \

            4   8

           /   / \

          11  13  4

         /  \      \

        7    2      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

 比较通俗易懂一点的看法:

 1 public class Solution {

 2     public boolean hasPathSum(TreeNode root, int sum) {

 3         if (root == null) return false;

 4         return helper(root, sum);

 5     }

 6     

 7     public boolean helper(TreeNode root, int remain) {

 8         if (root.left==null && root.right==null) {

 9             if (remain-root.val == 0) return true;

10             else return false;

11         }

12         if (root.left==null && root.right!=null) {

13             return helper(root.right, remain-root.val);

14         }

15         if (root.left!=null && root.right==null) {

16             return helper(root.left, remain-root.val);

17         }

18         else return helper(root.left, remain-root.val) || helper(root.right, remain-root.val);

19     }

20 }

 

 精炼简洁的做法,但是不容易写:

1 public boolean hasPathSum(TreeNode root, int sum) {

2     if(root == null)

3         return false;

4     if(root.left == null && root.right==null && root.val==sum)

5         return true;

6     return hasPathSum(root.left, sum-root.val) || hasPathSum(root.right, sum-root.val);

7 }

 

你可能感兴趣的:(LeetCode)