class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<List<Integer>>(); if(root==null) return res; Queue<TreeNode> queue=new LinkedList<TreeNode>(); List<Integer> list=new ArrayList<Integer>(); queue.add(root); queue.add(null); boolean zig=true; while(!queue.isEmpty()) { TreeNode node=queue.poll(); if(node==null) { res.add(new ArrayList<Integer>(list)); if(!queue.isEmpty()) queue.add(node); list.clear(); zig=!zig; } else { if(zig==true) list.add(node.val); else list.add(0, node.val); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } } return res; } }