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
思路:递归所有路径,如果到达叶子节点,并且此时sum=0,则返回true;
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public boolean hasPathSum(TreeNode root, int sum) { 12 if (root==null) 13 return flase; //一开始如果传进来空引用,则返回false; 14 sum-=root.val; 15 if (root.left==null&&&root.right==null){ //如果已经到了叶子 16 if (sum==0) //如果此时sum=0,则返回true 17 return true; //否则返回false 18 else 19 return false; 20 } 21 //同时递归左右子树 22 return hasPathSum(root.left,sum)||hasPathSum(root.right,sum); 23 } 24 }