层序遍历:
Input: root = [3,9,20,null,null,15,7]
Output: [[3],[9,20],[15,7]]
var levelOrder = function(root) {
if (!root) return [];
let queue = [root]; // 使用队列保存每层,第一层先入队
let res = [];
while(queue.length) {
// 总循环,一直到遍历结束后退出,返回res
let len = queue.length; // 每行
let arr = []; // 保存每一层的array值
while(len) { // 遍历当前层
let node = queue.shift(); // 第一个节点,出队列
if (node) arr.push(node.val);
// 如果左右子节点存在
node.left && queue.push(node.left);
node.right && queue.push(node.right);
len--;
}
res.push(arr);
}
return res;
};
[1] https://blog.nowcoder.net/n/4f8dc7b6c14c49f3bbae3417bc474f53?f=comment
[2] https://juejin.cn/post/6844904063650234375#heading-10