解题思路1:
import java.util.ArrayList;
import java.util.Stack;
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
ArrayList > Print(TreeNode pRoot) {
//树的层数
int layer = 1;
//奇数层
Queue q1 = new LinkedList<>();
//偶数层
Queue q2 = new LinkedList<>();
q1.add(pRoot);
ArrayList> resultList = new ArrayList>();
//存放某一层的结点
ArrayList tempList;
while(!q1.isEmpty() || !q2.isEmpty()){
if(layer%2 != 0){
tempList = new ArrayList<>();
while(!q1.isEmpty()){
//取出第一个TreeNode
TreeNode node = q1.poll();
if(node != null){
tempList.add(node.val);
//node的子节点都是偶数层
q2.add(node.left);
q2.add(node.right);
}
}
//将该层的值全部存入到resulList中
if(!tempList.isEmpty()){
resultList.add(tempList);
}
}else{
tempList = new ArrayList<>();
while(!q2.isEmpty()){
//取出第一个TreeNode
TreeNode node = q2.poll();
if(node != null){
tempList.add(node.val);
//node的子结点都是奇数层
q1.add(node.left);
q1.add(node.right);
}
}
//将该层的值全部存入到resulList中
if(!tempList.isEmpty()){
resultList.add(tempList);
}
}
layer++;
}
return resultList;
}
}