path sumII

来源:互联网 发布:linux 脚本修改密码 编辑:程序博客网 时间:2024/06/08 18:20
public class Solution {    public ArrayList<Integer> list1 = new ArrayList<Integer>();    public ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();    public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {                if(root==null)return list;        dfs(root,sum);        return list;    }    private void dfs(TreeNode node,int sum){        list1.add(node.val);            if(node.left!=null){            dfs(node.left,sum-node.val);        }         if(node.right!=null){            //System.out.println(node.right.val);            dfs(node.right,sum-node.val);            }        if(node.left==null&&node.right==null){        if(sum==node.val){        //System.out.println(list1);        //System.out.println(11);        //System.out.println(list1);        ArrayList<Integer> temp = new ArrayList<Integer>();        for(int i = 0; i<list1.size();i++){        temp.add(list1.get(i));         }        list.add(temp);                list1.remove(list1.size()-1);                return;        }            else{list1.remove(list1.size()-1);return;}        }    //System.out.println(list1);        list1.remove(list1.size()-1);    }/*    public static void main(String[] args){    Solution aa =new Solution();    TreeNode root = aa.new TreeNode(2);    TreeNode a = aa.new TreeNode(-2);    TreeNode ab = aa.new TreeNode(3);    root.left = a;    root.right=ab;    ArrayList<ArrayList<Integer>> c = aa.pathSum(root,5);    //int t = c.get(0).get(0);    System.out.print(aa.list);    }*/}



上面的是错的。

public class Solution {        public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {                ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();        ArrayList<Integer> list1 = new ArrayList<Integer>();        if(root==null)return list;        dfs(root,sum,list1,list);        return list;    }    private void dfs(TreeNode node,int sum,        ArrayList<Integer> list1,            ArrayList<ArrayList<Integer>> list){        if(node == null) return;        list1.add(node.val);            if(node.left!=null){            dfs(node.left,sum-node.val,list1,list);        }        if(node.right!=null){            dfs(node.right,sum-node.val,list1,list);            }        if(node.left==null&&node.right==null){            if(sum==node.val){        ArrayList<Integer> temp = new ArrayList<Integer>(list1);        list.add(temp);        }        }        list1.remove(list1.size()-1);    }}