LeetCode-in-All

102. Binary Tree Level Order Traversal

Medium

Given the root of a binary tree, return the level order traversal of its nodes’ values. (i.e., from left to right, level by level).

Example 1:

Input: root = [3,9,20,null,null,15,7]

Output: [[3],[9,20],[15,7]]

Example 2:

Input: root = [1]

Output: [[1]]

Example 3:

Input: root = []

Output: []

Constraints:

Solution

# Definition for a binary tree node.
# class TreeNode
#     attr_accessor :val, :left, :right
#     def initialize(val = 0, left = nil, right = nil)
#         @val = val
#         @left = left
#         @right = right
#     end
# end
# @param {TreeNode} root
# @return {Integer[][]}
def level_order(root)
  result = []
  return result if root.nil?

  queue = [root, nil]
  level = []

  until queue.empty?
    current = queue.shift

    if current.nil?
      result << level.dup
      level.clear
      queue.push(nil) unless queue.empty?
    else
      level << current.val

      queue.push(current.left) if current.left
      queue.push(current.right) if current.right
    end
  end

  result
end