题目描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
代码片
/**
* @param {TreeNode} root
* @return {number[]}
*/
/**
* 解题思路:
* 这种按层打印的通常情况下都会用BFS
* 要按照同一层的节点从左到右,就先把左子树节点添加到队列,
* 然后再把右子树节点添加到队列。
*
*/
var levelOrder = function(root) {
//非空判定
if(root == null){
return [];
}
//BFS广度优先搜索
let queue = [root];
res = [];
while(queue.length) {
//队头出
let node = queue.shift();
res.push(node.val);
//把当前元素的左右子节点加入队列
if(node.left) queue.push(node.left);
if(node.right) queue.push(node.right);
}
return res;
};