把二叉树打印多行

把二叉树打印成多行

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

}
全部评论

相关推荐

03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务