把二叉树打印多行

把二叉树打印成多行

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

解法

运用两个队列解决这个层序遍历的问题,工作队列永远是当前输出的那一层,还有一个辅助队列是用来存储孩子结点。如果工作队列空了,在看辅助队列有没有孩子结点。

代码

import java.util.ArrayList;


/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        if(pRoot == null){
            return new ArrayList<>();
        }
        ArrayList<ArrayList<Integer> > array = new ArrayList<>();
        ArrayList<TreeNode> nodes = new ArrayList<>();
        nodes.add(pRoot);
        ArrayList<TreeNode> ch = new ArrayList<>();
        ArrayList<Integer> ans = new ArrayList<>();
        while(nodes.size() != 0 ){
            TreeNode node = nodes.get(0);
            ans.add(node.val);
            nodes.remove(0);
            if(node.left !=null){
                ch.add(node.left);
            }
            if(node.right != null){
                ch.add(node.right);
            }
            if(nodes.size() == 0 && ans.size() !=0 ){
                array.add(new ArrayList<>(ans));
                ans.clear(); 
                nodes.addAll(new ArrayList<>(ch));
                ch.clear();
            }
        }
        return array;
    }

}
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务