剑指 Offer 32

通过率 64.7%

题目链接

题目描述:

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:
给定二叉树: [3,9,20,null,null,15,7],

3
/
9 20
/
15 7

返回:

[3,9,20,15,7]

提示:

节点总数 <= 1000

思路:

bfs广搜,创建一个队列按层序遍历存储节点,还须创建一个数组res来存储对应的节点值(即返回结果)

  • 先将根节点入队
  • 遍历队列,一旦当前节点(即队首节点)有左子树,就将左子树入队,右子树也一样
  • 将当前节点的val值push进数组res,shift弹出当前节点
  • 重复前两步操作直到队列为空
 1 /*JavaScript*/
 2 /**
 3  * Definition for a binary tree node.
 4  * function TreeNode(val) {
 5  *     this.val = val;
 6  *     this.left = this.right = null;
 7  * }
 8  */
 9 /**
10  * @param {TreeNode} root
11  * @return {number[]}
12  */
13 var levelOrder = function(root) {
14     if(!root) return []
15 
16     const queue = new Array()
17     const res = new Array()
18     queue.push(root)
19     
20     while(queue.length) {
21         if(queue[0].left) queue.push(queue[0].left)
22         if(queue[0].right) queue.push(queue[0].right)
23         res.push(queue.shift().val)
24     }
25     return res
26 };
原文地址:https://www.cnblogs.com/wwqzbl/p/15142804.html