Iterative
def level_order(root) result = [] return result if root.nil? queue = [] queue << root until queue.empty? level_size = queue.length level = [] level_size.times do node = queue.shift level << node.val queue << node.left unless node.left.nil? queue << node.right unless node.right.nil? end result << level end result.reverse! end
This is very similar to the iterative solution for problem 102, except that we reverse result
at the end. For detailed explanation, please read:
Top comments (1)
You deserve an oscar for clean code. thanks.