class Solution { public List> levelOrder(TreeNode root) { List> result = new LinkedList>(); if(root==null) { return result; } List list = new LinkedList(); Deque deque = new LinkedList(); deque.offer(root); TreeNode flag = root; int k=1; while(!deque.isEmpty()) { TreeNode p =deque.poll(); list.add(p.val); if(p.left!=null) { deque.offer(p.left); } if(p.right!=null) { deque.offer(p.right); } if(flag==p) { flag = deque.peekLast(); if(k%2==0) { Collections.reverse(list); } result.add(list); list = new LinkedList(); k++; } } return result; } }