题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {

         ArrayList<Integer> arr=new ArrayList<Integer>();
        ArrayList<ArrayList<Integer> > arr1=new  ArrayList<ArrayList<Integer> >();
        Queue<TreeNode> q=new LinkedList<TreeNode>();
        Stack<Integer> s=new Stack<Integer>();
        if(pRoot==null) return arr1;
        q.offer(pRoot);
        TreeNode tail=pRoot,last=pRoot;
        int flag=0;
        while(!q.isEmpty())
        {
            TreeNode temp=q.poll();
            
            if(flag%2==0)
            {
               arr.add(temp.val);
            }
            else
            {
                s.push(temp.val);
            }
          
               
           
            if(temp.left!=null)
            {
                q.offer(temp.left);
                tail=temp.left;
            }
            if(temp.right!=null)
            {
                q.offer(temp.right);
                tail=temp.right;
            }
            
              //一层结束时
            if(temp.val==last.val) 
            {
                 last=tail;
                if(flag%2==0)
                {
                    arr1.add(new ArrayList<Integer>(arr));
                    arr.clear();
                    flag++;
                    
                }
                else{
                    while(!s.isEmpty())
                    {
                        arr.add(s.pop());
                    }
                    arr1.add(new ArrayList<Integer>(arr));
                    arr.clear();
                    flag++;
                }
            }
        }
         return arr1;
    }
   

}

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务