All files / leetCode 0103.ts

100% Statements 21/21
100% Branches 8/8
100% Functions 1/1
100% Lines 20/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38          4x   4x 1x   3x 3x   3x 7x 7x   7x 13x   13x 9x   4x   13x 5x 13x 5x     7x 7x     3x    
import type { TreeNode } from './Tree'
 
export default function zigzagLevelOrder(
  root: TreeNode<number> | null,
): number[][] {
  const res: number[][] = []
 
  if (root === null)
    return res
 
  const queue = [root]
  let zigzag = true
 
  while (queue.length > 0) {
    const len = queue.length
    const row: number[] = []
 
    for (let i = 0; i < len; i++) {
      const node = queue.shift() as TreeNode<number>
 
      if (zigzag)
        row.push(node.val)
      else
        row.unshift(node.val)
 
      if (node.left !== null)
        queue.push(node.left)
      if (node.right !== null)
        queue.push(node.right)
    }
 
    zigzag = !zigzag
    res.push(row)
  }
 
  return res
}