剑指 Offer 32 - II. 从上到下打印二叉树 II
思路如下:
从上到下打印二叉树
层次遍历即可:
层次遍历使用的集合框架为队列,队列可以先进先出,可以很好的帮助我们进行存储节点和随时出队列供我们使用
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//核心 队列来进行层次遍历
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> ans = new ArrayList<>();
if(root == null ) return ans;
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size(); //记录当前层的节点个数
List<Integer> list = new ArrayList<>();
//遍历当前层次的节点添加到list当中去,然后将左右子树添加进入队列 为下一层遍历做准备
for(int i = 0; i< size ; i++ ){
TreeNode treeNode = queue.poll();
if(treeNode.left!= null) queue.offer(treeNode.left);
if(treeNode.right !=null) queue.offer(treeNode.right);
list.add(treeNode.val);
}
ans.add(new ArrayList<>(list));
list.clear();
}
return ans;
}
}