题目链接:剑指 Offer 32 - III. 从上到下打印二叉树 III
题目描述:
/**
* 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>> levelOrder(TreeNode root) {
if(root==null)return new ArrayList<>();
List<List<Integer>> ans=new ArrayList<>();
Deque<TreeNode> queue=new LinkedList<>();
queue.offer(root);
int flag=0;
while(!queue.isEmpty()){
int len = queue.size();
//注意这里是重点,linkedlist能选择从前面添加还是后面添加正好符合题目要求
LinkedList<Integer> list=new LinkedList<>();
for (int i = 0; i < len; i++) {
TreeNode poll=queue.poll();
if(flag==0) {list.add(poll.val);}
else {list.addFirst(poll.val);}
if(poll.left!=null)queue.offer(poll.left);
if(poll.right!=null)queue.offer(poll.right);
}
flag=flag==0?1:0;
ans.add(list);
}
return ans;
}
}