class TreeNode { int val; TreeNode left; TreeNode right; } class Solution { private Queue<TreeNode>cur=new ArrayDeque<TreeNode>(); private Queue<TreeNode>next=new ArrayDeque<TreeNode>(); //两个队列交互使用来达到一个层层递进的效果从而完成层序遍历 private List<List<Integer>>src=new ArrayList<List<Integer>>(); public List<List<Integer>> levelOrder(TreeNode root) { if(root!=null) { next.add(root); List<Integer>list=new ArrayList<Integer>(); list.add(root.val); src.add(list); while(!next.isEmpty()) { for(TreeNode ss:next) cur.add(ss); next.clear(); List<Integer>tt=new ArrayList<Integer>(); while(!cur.isEmpty()) { TreeNode dd=cur.poll(); //得到后并且删除掉 if(dd.left!=null) { tt.add(dd.left.val); next.add(dd.left); } if(dd.right!=null) { tt.add(dd.right.val); next.add(dd.right); } } if(!tt.isEmpty()) //如果左子树与右子树都为空,则不加入进去 src.add(tt); } } return src; } }