难度:中等
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右
访问所有节点)。
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
输入:root = [1]
输出:[[1]]
输入:root = []
输出:[]
/**
* 迭代 - 广度优先查找
* @desc 时间复杂度 O(N) 空间复杂度 O(N)
* @param root
*/
export function levelOrder(root: TreeNode | null): number[][] {
if (!root) return [];
const ans: number[][] = [];
const queue: TreeNode[] = [root];
while (queue.length) {
const vals: number[] = [];
const queueLen = queue.length;
for (let i = 0; i < queueLen; i++) {
const tree = queue.shift()!;
vals.push(tree.val);
tree.left && queue.push(tree.left);
tree.right && queue.push(tree.right);
}
ans.push(vals);
}
return ans;
}