题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
import java.util.*;
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> arrayList = new ArrayList<Integer>();
LinkedList<TreeNode> linkedList = new LinkedList<TreeNode>();
if(pRoot == null) return res;
linkedList.add(pRoot);
int start = 0;
int end = 1;
while(!linkedList.isEmpty()){
TreeNode treeNode = linkedList.remove();
end--;
arrayList.add(treeNode.val);
if(treeNode.left != null){
linkedList.add(treeNode.left);
start++;
}
if(treeNode.right != null){
linkedList.add(treeNode.right);
start++;
}
if(end == 0){
res.add(new ArrayList<Integer>(arrayList));
arrayList.clear();
end = start;
start = 0;
}
}
return res;
}
}