题目
剑指 Offer 32 - I. 从上到下打印二叉树
题解
队列
- 初始化队列
queue
和结果数组res
,从二叉树根节点3开始
- 先将3推入到队列
queue
中,看3有没有左子树和右子树
- 有的话,将3从队列
queue
中取出,放入结果数组res
的第一位,此时res = []int{3}
- 访问3的左子树节点9,将9推入到队列
queue
中
- 此时看9有没有左子树和右子树,没有,将9从队列
queue
中取出放入结果数组res
中,此时res = []int{3,9}
- 访问3的右子树节点20,将20推入到队列
queue
中
- 此时看20有没有左子树和右子树,有,将左子树15推入队列
queue
中
- 看15有没有左子树和右子树,没有,将队列中的20,15依次取出放入结果数组
res
,此时res = []int{3,9,20,15}
- 访问20的右子树7,发现7没有左子树和右子树,将7推入进队列
queue
中,然后取出放入res
,此时res = []int{3,9,20,15,7}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class Solution { public int[] levelOrder(TreeNode root) { if(root == null) return new int[0];
Queue<TreeNode> queue = new LinkedList<>();
List<Integer> list = new ArrayList<>();
queue.add(root);
while (!queue.isEmpty()) { TreeNode node = queue.poll(); list.add(node.val);
if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } int[] res = new int[list.size()]; for (int i = 0;i < list.size();i++) { res[i] = list.get(i); }
return res; } }
|
leetcode-cn
执行
1 2
| 执行用时:1 ms, 在所有 Java 提交中击败了97.77%的用户 内存消耗:41.5 MB, 在所有 Java 提交中击败了28.48%的用户
|