require 'test/unit'
require 'pry'
class LevelOrderTraversal < Test::Unit::TestCase
def test_run
tree = TreeNode.new(3)
tree.left = TreeNode.new(9)
tree.right = TreeNode.new(20)
tree.right.left = TreeNode.new(15)
tree.right.right = TreeNode.new(7)
assert_equal([
[3],
[9, 20],
[15, 7]
],
levelorder_traversal(tree))
assert_equal([],
levelorder_traversal(nil))
end
def levelorder_traversal(root)
result = []
if root == nil
return result
end
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
end
end
# Definition for a binary tree node.
class TreeNode
attr_accessor :val, :left, :right
def initialize(val)
@val = val
@left, @right = nil, nil
end
end
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
List of users who liked
00