package problems.easy; import problems.utils.TreeNode; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; /** * Created by sherxon on 2016-12-24. */ public class BinaryTreeLevelOrderTraversal2 { public List<List<Integer>> levelOrder(TreeNode root) { LinkedList<List<Integer>> l=new LinkedList<>(); l.add(null); List<Integer> ll=new ArrayList<>(); Queue<TreeNode> q=new LinkedList<>(); Queue<TreeNode> qq=new LinkedList<>(); if(root!=null)q.add(root); while(!q.isEmpty()){ TreeNode t=q.remove(); ll.add(t.val); if(q.isEmpty()){ l.addFirst(new ArrayList<>(ll)); ll.clear(); } if(t.left!=null)qq.add(t.left); if(t.right!=null)qq.add(t.right); if(q.isEmpty()){ q.addAll(new LinkedList<>(qq)); qq.clear(); } } return l; } }