diff --git a/ruby/102-Binary-Tree-Level-Order-Traversal.rb b/ruby/102-Binary-Tree-Level-Order-Traversal.rb new file mode 100644 index 000000000..b4d94fd92 --- /dev/null +++ b/ruby/102-Binary-Tree-Level-Order-Traversal.rb @@ -0,0 +1,32 @@ +# 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 = [] + + level = [] + level << root if root + until level.empty? + vals = [] + next_level = [] + + level.each do |node| + vals << node.val + next_level << node.left if node.left + next_level << node.right if node.right + end + + result << vals + level = next_level + end + + result +end