爱站seo排名可以做哪些网站,网站开发一般用什么工具,开发区二手房房价最新信息,网络推广怎么推广题目
从上到下打印出二叉树的每个节点#xff0c;同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回#xff1a; [3,9,20,15,7] 提示#xff1a;
节点总数 1000 解题思路 1.题目要求我们从…题目
从上到下打印出二叉树的每个节点同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回 [3,9,20,15,7] 提示
节点总数 1000 解题思路 1.题目要求我们从上到下打印出二叉树的每个节点同一层的节点按照从左到右的顺序打印。也就是按照二叉树的层序遍历打印二叉树。 2.我们只需要一个队列即可实现首先我们判断树是否为空若为空则返回一个没有元素的数组。然后我们建立一个队列来执行打印操作再建立一个可变数组来存放遍历后的元素因为我们不确定所给树的元素的个数所以需要一个可变数组。 3.下面我们开始遍历首先我们将根节点入队。然后进入一个while循环若队列不为空则将让队列进行出队操作然后将刚出队的元素保存在可变数组中再判断此元素是否有左右孩子若存在左右孩子就将左右孩子入队。之后再次判断队列是否为空。循环往复直到队列为空就代表整棵树已经遍历完了。 4.最后我们需要将可变数组中的元素存入一个数组并且返回即可。 举个例子 先让三入队 queue 不为空让 3 出队并且让 3 的左右孩子入队。 queue 不为空让 9 出队因为 9 没有左右孩子所以不进行入队操作 queue 不为空 让 20 出队并且让 20 的左右孩子入队。 queue 不为空让 15 出栈15 没有左右孩子 所以不进行入队操作 queue 不为空让 7 出栈7 没有左右孩子 所以不进行入队操作 queue 为空打印结束。 代码实现
class Solution {public int[] levelOrder(TreeNode root) {if(root null){return new int[0];}QueueTreeNode queue new LinkedList();ListInteger res new ArrayList();queue.add(root);while(!queue.isEmpty()){TreeNode cur queue.poll();res.add(cur.val);if(cur.left ! null) queue.add(cur.left);if(cur.right ! null) queue.add(cur.right);}int[] num new int[res.size()];for(int i 0; i res.size(); i){num[i] res.get(i);}return num;}
}
测试结果