从上到下打印二叉树
解题:利用队列先进先出来实现层次遍历
因为需要按层次遍历节点,所以我们可以使用队列先进先出的特点来存储每层节点的值
每取出一个节点就将该节点的左右节点存入队列当中
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {//层次遍历
Queue<TreeNode> q = new LinkedList<>();
List<Integer> list = new ArrayList<Integer>();
public int[] levelOrder(TreeNode root) {
if(root == null) return new int[0];
q.add(root);
list.add(root.val);
while(true){
for(int i=0;i<q.size();i++){//q.size()控制当前层元素个数,要出多少次队列
TreeNode t = q.poll();
if(t.left != null){
q.add(t.left);
list.add(t.left.val);
}
if(t.right != null){
q.add(t.right);
list.add(t.right.val);
}
}
if(q.size() == 0) break;
}
int n = list.size();
int []res = new int [n];
for(int i=0;i<n;i++)
res[i] = list.get(i);
return res;
}
}
不一样的烟火