寻找最短的二叉树搜索路径,从根到叶节点

2017-12-10  本文已影响25人  yeying12321
public class TreeNode {
    int val=0;
    TreeNode left=null;
    TreeNode right=null;

    public TreeNode(int val) {
        this.val = val;
    }
}


//寻找最短的 二叉树搜索路径
public class Solution2 {
    private ArrayList<ArrayList<Integer>> allPaths=new ArrayList<ArrayList<Integer>>();
    private ArrayList<Integer> onePath=new ArrayList<Integer>();

    public ArrayList<ArrayList<Integer>> findAllPath(TreeNode root) {
        if(root==null)
            return allPaths;
        onePath.add(root.val);
        //若为叶子节点,则onePath加入到allPaths;
        if(root.left==null&&root.right==null){
             allPaths.add(new ArrayList<Integer>(onePath));
        }
        findAllPath(root.left);
        findAllPath(root.right);
        onePath.remove(onePath.size()-1);
        return allPaths;
    }
}

/**

public class Solution {
    //记录所有的路径
    private ArrayList<ArrayList<Integer>> listAll=new ArrayList<ArrayList<Integer>>();
    //记录一条
    private ArrayList<Integer> listOne=new ArrayList<Integer>();

    public ArrayList<ArrayList<Integer>> findPath(TreeNode root,int target) {
        if(root==null)
            return listAll;
        listOne.add(root.val);
        target-=root.val;
        if(target==0&&root.left==null&&root.right==null)
            listAll.add(new ArrayList<Integer>(listOne));
        findPath(root.left,target);
        findPath(root.right,target);
        listOne.remove(listOne.size()-1);
        return listAll;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读