問題描述
從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
思路
比上題還簡單,用層序遍歷即可。
方法一
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if(pRoot == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
while(!queue.isEmpty()){
ArrayList<Integer> tmp = new ArrayList<>();
Queue<TreeNode> next = new LinkedList<>();
while(!queue.isEmpty()){
tmp.add(queue.peek().val);
if(queue.peek().left != null) next.add(queue.peek().left);
if(queue.peek().right != null) next.add(queue.peek().right);
queue.poll();
}
res.add(tmp);
queue = next;
}
return res;
}
}