Skip to content

Instantly share code, notes, and snippets.

@cfc1020
Last active June 8, 2020 16:39
Show Gist options
  • Select an option

  • Save cfc1020/eb25a56f999ef8747e1fabfef24164a3 to your computer and use it in GitHub Desktop.

Select an option

Save cfc1020/eb25a56f999ef8747e1fabfef24164a3 to your computer and use it in GitHub Desktop.
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level)..
# 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)
nodes = [root].compact
res = []
loop do
nodes_size = nodes.size
break if nodes_size.zero?
curr_res = []
while nodes_size > 0 do
curr = nodes.shift
nodes_size -= 1
curr_res << curr.val
nodes << curr.left if curr.left
nodes << curr.right if curr.right
end
res << curr_res
end
res
end
# 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)
res = []
dfs(root, res)
res
end
def dfs(node, res, level = 0)
return if node.nil?
res[level] ||= []
res[level] << node.val
dfs(node.left, res, level + 1)
dfs(node.right, res, level + 1)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment