LC 103
- Deque “double ended queue” (官方推荐取代stack):
链接: link
import java.util.*;
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> a=new ArrayList<>();
if (root==null)return a;
Deque<TreeNode> d=new LinkedList<TreeNode>();
d.offerFirst(root);
boolean left=true;
while(!d.isEmpty()){
int l=d.size();
List<Integer> atmp=new ArrayList<>();
while(l>0){
if(left){
TreeNode tmp=d.pollFirst();
atmp.add(tmp.val);
if(tmp.left!=null)d.offerLast(tmp.left);
if(tmp.right!=null)d.offerLast(tmp.right);
}else{
TreeNode tmp=d.pollLast();
atmp.add(tmp.val);
if(tmp.right!=null)d.offerFirst(tmp.right);
if(tmp.left!=null)d.offerFirst(tmp.left);
}
l--;
}
left=!left;
a.add(atmp);
}
return a;
}
}