JAVA双队列

把二叉树打印成多行

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

单队列即可,因为我先看的后面这题,所以用了双队列 ,哈哈哈,有点傻了

    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        //双队列
        ArrayList<ArrayList<Integer>> listAll = new ArrayList<>();
        if(pRoot==null) {
            return listAll;
        }
        Queue<TreeNode> queue1 = new LinkedList<>();
        Queue<TreeNode> queue2 = new LinkedList<>();
        queue1.add(pRoot);
        while(!queue1.isEmpty()||!queue2.isEmpty()) {
            ArrayList<Integer> list = new ArrayList<>();
            if(!queue1.isEmpty()) {
                while(!queue1.isEmpty()) {
                    TreeNode node = queue1.remove();
                    list.add(node.val);
                    if (node.left != null)
                        queue2.add(node.left);
                    if (node.right != null)
                        queue2.add(node.right);
                }
                listAll.add(list);
                continue;
            }else {
                while(!queue2.isEmpty()) {
                    TreeNode node = queue2.remove();
                    list.add(node.val);
                    if (node.left != null)
                        queue1.add(node.left);
                    if (node.right != null)
                        queue1.add(node.right);
                }
                listAll.add(list);
                continue;
            }
        }
        return listAll;

    }
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务