• 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 andsum =



    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 andsum = 22,

                  5
                 / 
                4   8
               /   / 
              11  13  4
             /        
            7    2      1
    

    return true, as there exist a root-to-leaf path5->4->11->2which sum is 22.

    代码 1

    import java.util.ArrayList;
    
    class TreeNode {
              int val;
              TreeNode left;
              TreeNode right;
              TreeNode(int x) { val = x; }
          }
    public class Solution {
        ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> arr=new ArrayList<Integer>();
        public boolean hasPathSum(TreeNode root, int sum) {
            if(root==null)return false;
            isPath(root,0,sum);
            if(result.isEmpty())return false;
            else return true;
            
        }
        private void isPath(TreeNode root, int sum, int target) {
            if(root==null)return;
            else{
                sum+=root.val;
                arr.add(root.val);
                if(root.left==null&&root.right==null&&sum==target){
                    result.add(new ArrayList<Integer>(arr));
                }
                isPath(root.left, sum, target);
                isPath(root.right, sum, target);
                arr.remove(arr.size()-1);
                sum-=root.val;
            }
            
        }
    }

    代码二:
    import java.util.ArrayList;
    
    class TreeNode {
              int val;
              TreeNode left;
              TreeNode right;
              TreeNode(int x) { val = x; }
          }
    public class Solution {
    
         public boolean hasPathSum(TreeNode root, int sum) {
                return hasPathSumHelper(root, sum);
           }
    
        private boolean hasPathSumHelper(TreeNode root, int sum) {
            // TODO Auto-generated method stub
            if(root==null)return false;
            if(root.left==null&&root.right==null&&sum==root.val)return true;
            return hasPathSumHelper(root.left, sum-root.val)||hasPathSumHelper(root.right, sum-root.val);
        }
    }
    
    
    
     
  • 相关阅读:
    (原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码
    (学)新版动态表单研发,阶段成果3
    (学) 如何将 Oracle 序列 重置 清零 How to reset an Oracle sequence
    (学)XtraReport WebService Print 报错
    (原)三星 i6410 刷机 短信 无法 保存 解决 办法
    (原) Devexpress 汉化包 制作工具、测试程序
    linux下网络配置
    apache自带ab.exe小工具使用小结
    Yii::app()用法小结
    PDO使用小结
  • 原文地址:https://www.cnblogs.com/softwarewebdesign/p/5511489.html
Copyright © 2020-2023  润新知