【题目描述】
【思路】
层次遍历二叉树
奇数层:每个节点从0位置插入
偶数层:每个节点从尾部插入
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> printFromTopToBottom(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
// System.out.println( root == null );
if( root == null ) return res;
q.offer(root);
int level = 1; //层数
while( !q.isEmpty() ){
int size = q.size();
List<Integer> sub = new ArrayList<>();
while( size -- > 0){//当前层的节点数
TreeNode node = q.poll();
if(node.left != null ) q.offer(node.left );
if(node.right != null ) q.offer(node.right);
if( level % 2 == 1){//奇数层
sub.add(node.val);
}else{
sub.add(0, node.val);
}
}
res.add(sub);
level ++;
}
return res;
}
}