版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010221508/article/details/88604475
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
/*
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) {
ArrayList<ArrayList<Integer>> list = new ArrayList();
if(pRoot == null) return list;
ArrayList<TreeNode> subList = new ArrayList();
subList.add(pRoot);
//创建每层的容器
list.add(new ArrayList());
//换层标记
subList.add(null);
while(subList.size() != 0) {
TreeNode root = subList.remove(0);
if(root != null) {
if(root.left != null) {
subList.add(root.left);
}
if(root.right != null) {
subList.add(root.right);
}
}else {
if(subList.size() != 0) {
list.add(new ArrayList());
subList.add(null);
}
continue;
}
list.get(list.size() - 1).add(root.val);
}
return list;
}
}