每日一题;
今天做的是二叉树的查找,相对来说也是比较简单的题目,很容易想到递归,最后也是递归做的。这里需要注意的有两件事情:
1、第一次做的时候,想当然的认为所有的数字是正数,然后很淡定的加了一个判断,如果给出的数比根节点小,就无解,显然是想当然了,结果就WA了,把这个判断去掉果断AC了。
2、之前是自己写if else出来以后时间上都过500ms了,于是自己简化了一下代码,结果还算满意吧,430ms,所以代码的规范很重要。
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.
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(null == root){
return false;
}
if(null == root.left && null == root.right){
return sum == root.val?true:false;
}else if(hasPathSum(root.left, sum-root.val)){
return true;
}else {
return hasPathSum(root.right, sum-root.val);
}
}
}