您的位置:首页 > 其它

112. Path Sum

2016-09-17 14:24 351 查看
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 {
int sumn=0;
int value=0;
public boolean hasPathSum(TreeNode root, int sum) {
sumn=sum;
if(root==null) return false;
return preorder(root);
}
public boolean preorder(TreeNode root){
value+=root.val;
boolean b=false;
if(root.left==null&&root.right==null)
{if(value==sumn) b= true; //到达叶子节点
}
else if(root.left==null&&root.right!=null)
b= preorder(root.right); //遍历右子树
else if (root.left!=null&&root.right==null)
b= preorder(root.left); //遍历左子树
else b= preorder(root.left)||preorder(root.right); //继续遍历左右子树
value-=root.val; //查找其他路径时把这个节点的值减去,相当于此步不符合要求,回退到上一步
return b;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: