基本思路就是通过使用对列(FIFO)来实现二叉树的层序遍历
ArrayListlist = new ArrayList<>(); ArrayList > res = new ArrayList<>(); if(root==null) return res; ArrayDeque queue = new ArrayDeque<>(); queue.add(root); while(!queue.isEmpty()){ int size = queue.size(); list = new ArrayList<>(); while(size-->0){ TreeNode temp = queue.pop(); list.add(temp.val); if(temp.left!=null){ queue.offer(temp.left); } if(temp.right!=null){ queue.offer(temp.right); } } res.add(list); } return res;
另一道题是倒序输出层序遍历的结果,可以使用ArrayList.add(index,e)的方法,效果是把e插入到Index的位置,其他顺序后移。
ArrayListlist = new ArrayList<>(); ArrayList > res = new ArrayList<>(); if(root==null) return res; ArrayDeque queue = new ArrayDeque<>(); queue.add(root); while(!queue.isEmpty()){ int size = queue.size(); list = new ArrayList<>(); while(size-->0){ TreeNode temp = queue.pop(); list.add(temp.val); if(temp.left!=null){ queue.offer(temp.left); } if(temp.right!=null){ queue.offer(temp.right); } } res.add(0,list); } return res;
啊~又水了一篇博客~