LeetCode PathSum

来源:互联网 发布:淘宝情趣内衣未打码 编辑:程序博客网 时间:2024/05/16 01:06

 题目描述:https://oj.leetcode.com/problems/path-sum/

 给定一个二叉树,一个sum,判断树中有没有从根结点到叶节点的路径,这个路径节点和为sum。DFS 可解。


package Path_Sum;public class Solution {class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}boolean flag = false;void dfs(TreeNode root,int sum){if(root.left==null&&root.right==null){if(sum==0){flag = true;}return;}if(root.left!=null){sum = sum-root.left.val;dfs(root.left,sum);sum += root.left.val;if(flag==true) return;}if(root.right!=null){sum = sum-root.right.val;dfs(root.right,sum);sum += root.right.val;if(flag==true) return;}}public boolean hasPathSum(TreeNode root,int sum){if(root!=null)dfs(root,sum-root.val);return flag;}/** * for test *  */  public  TreeNode construct(int[] nodes){    TreeNode[] treenodes = new TreeNode[nodes.length];    treenodes[0] = new TreeNode(nodes[0]);    for(int i=1;i<nodes.length;i++){    if(nodes[i] != -1){    treenodes[i]=new TreeNode(nodes[i]);    if(i%2==1)    treenodes[i/2].left=treenodes[i];    if(i%2==0)    treenodes[i/2-1].right=treenodes[i];    }    }    return treenodes[0];    }  public static void main(String[] args) {int[] nums = new int[]{5,4,8,11,-1,13,4,7,2,-1,-1,-1,-1,5,1};TreeNode root = new Solution().construct(nums);System.out.println(new Solution().hasPathSum(root, 22));}}


0 0