JAVA二叉树先序遍历递归+非递归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yexiguafu/article/details/51419845

非递归先序遍历:

<span style="font-size:24px;">public ArrayList<Integer> preorderTraversal(TreeNode root) {
        if(root==null)
            return new ArrayList<Integer> ();
        ArrayList<Integer> list=new ArrayList<Integer> ();
        Stack<TreeNode> s=new Stack<TreeNode>();
        TreeNode p=root;
        while(p!=null||!s.isEmpty()){
            while(p!=null){
                list.add(p.val);
                s.push(p);
                p=p.left;               
            }
            if(!s.isEmpty()){
                p=s.pop();
                p=p.right;
            }           
        }
        return list;       
    }</span>

递归先序遍历:

<span style="font-size:24px;">    ArrayList<Integer>list=new ArrayList<Integer>();
    public ArrayList<Integer> preorderTraversal(TreeNode root){       
        if(root==null)
            return list;           
        list.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return list;       
    }</span>



猜你喜欢

转载自blog.csdn.net/yexiguafu/article/details/51419845