此题根前面一道如出一辙,而且更简单一些

把二叉树打印成多行

http://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288

public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        ArrayList<Integer> item = new ArrayList<Integer>();
        Queue<TreeNode> q1 = new LinkedList<TreeNode>();
        Queue<TreeNode> q2 = new LinkedList<TreeNode>();
        if(pRoot==null) return res;
        q1.add(pRoot);
        while(true){
            if(q1.isEmpty() && q2.isEmpty()) break;
            if(!q1.isEmpty()){
                while(!q1.isEmpty()){
                    TreeNode temp = q1.poll();
                    item.add(temp.val);
                    if(temp.left!=null) q2.add(temp.left);
                    if(temp.right!=null) q2.add(temp.right);
                }
                res.add(new ArrayList(item));
                item.clear();
            }else{
                while(!q2.isEmpty()){
                    TreeNode temp = q2.poll();
                    item.add(temp.val);
                    if(temp.left!=null) q1.add(temp.left);
                    if(temp.right!=null) q1.add(temp.right);
                }
                res.add(new ArrayList(item));
                item.clear();
            }

        }
        return res;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务