题目描述:
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22,
代码如下:
/**
* 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) {
List<Integer> arr=new ArrayList<>();
Pre(root,arr);
boolean flag=false;
if(root==null){
return flag;
}
for(int i=0;i<arr.size();i++){
if(arr.get(i)==sum){
flag=true;
break;
}
}
return flag;
}
List<Integer> list=new ArrayList<>();
public void Pre(TreeNode root,List<Integer> arr){
if(root==null){
return ;
}
list.add(root.val);
Pre(root.left,arr);
Pre(root.right,arr);
if(root.left==null&&root.right==null){
int sum=0;
for(Integer i:list){
sum+=i;
}
arr.add(sum);
}
list.remove(list.size()-1);
}
}
执行结果: