把二叉树打印多行

把二叉树打印成多行

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;
    }

}
全部评论

相关推荐

昨天 13:08
蚌埠坦克学院 C++
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务