Binary Tree Level Order Traversal

MediumTreeBreadth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function levelOrder(root: TreeNode | null): number[][] {
  if (root === null) {
    return [];
  }
  const answer: number[][] = [];
  let currentNodes: TreeNode[] = [root];
  while (0 < currentNodes.length) {
    const values: number[] = [];
    const nextNodes: TreeNode[] = [];
    for (const currentNode of currentNodes) {
      values.push(currentNode.val);
      currentNode.left && nextNodes.push(currentNode.left);
      currentNode.right && nextNodes.push(currentNode.right);
    }
    answer.push(values);
    currentNodes = nextNodes;
  }
  return answer;
}