通过率 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 };