题解 | #把二叉树打印成多行#

把二叉树打印成多行

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

import java.util.ArrayList; import java.util.Queue; import java.util.concurrent.LinkedBlockingDeque;

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

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

}

} */ public class Solution { ArrayList<ArrayList > Print(TreeNode pRoot) { ArrayList<ArrayList> list = new ArrayList<>(); if(pRoot == null) return list;

    ArrayList<Integer> tList;
    Queue<TreeNode> queue = new LinkedBlockingDeque<>();
    queue.add(pRoot);//先让根节点入队

// tList.add(pRoot.val); // list.add(tList);

    while(!queue.isEmpty()) {
    	int size = queue.size();//此时队列中元素的个数就是这层树的结点的个数
    	tList = new ArrayList<>();
    	for(int i = 0;i < size;i++) {
            //把树的左右子节点入队
    		if(queue.peek().left != null) queue.add(queue.peek().left);
    		if(queue.peek().right != null) queue.add(queue.peek().right);
    		
    		tList.add(queue.poll().val);//把队列的收元素出队并加入到链表中
    	}
    	
    	list.add(tList);
    }
    
    return list;
}

}

全部评论

相关推荐

10-22 19:44
门头沟学院 Java
面了100年面试不知...:那我得去剪个头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务