剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
先定义链表用于存放节点,动态数组用于存放最外层
判断root是否为空,不为空就将添加到queue
然后循环当queue不为空
定义一个内层的动态数组,然后for循环,循环的大小是这一层的节点数量
然后循环体内定义一个临时节点用于取,然后将其值放入到临时数组中,
接着判断temp的左右子节点是否为空,不为空就将其存放入queue,然后for循环结束,将内层动态数组存入到外层的动态数组中去,
while循环结束,最后返回最外层
/**
* 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>> list=new ArrayList<>();
if(root!=null){
queue.add(root);
}
while(!queue.isEmpty()){
ArrayList<Integer> listtemp=new ArrayList<>();
for(int i=queue.size();i>0;i--){
TreeNode temp=queue.poll();
listtemp.add(temp.val);
if(temp.left!=null){
queue.add(temp.left);
}
if(temp.right!=null){
queue.add(temp.right);
}
}
list.add(listtemp);
}
return list;
}
}