问题描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回:
[3,9,20,15,7]
代码
定义一个数组,和一个队列,队列里存根节点,从队列头把根节点取出并将其值存入数组时,再将根节点的左右子节点也入队,持续循环,直到队列为空。
var levelOrder = function(root) {
let arr = [];
if (!root) return [];
arr.push(root);
let res = [];
while(arr.length) {
const node = arr.shift();
res.push(node.val);
node.left && arr.push(node.left);
node.right && arr.push(node.right);
}
return res;
};