Skip to content

Instantly share code, notes, and snippets.

@ralbt
Created May 27, 2017 08:22
Show Gist options
  • Save ralbt/8c92917a945897d442c5dce157e2f884 to your computer and use it in GitHub Desktop.
Save ralbt/8c92917a945897d442c5dce157e2f884 to your computer and use it in GitHub Desktop.
Ruby: Level order traversal of binary tree
class BinaryTree
attr_reader :root
def initialize(root)
@root = root
end
def level_order_traversal
if root.nil?
puts "Queue is empty"
return
end
queue = Queue.new
queue.enqueue(root)
while !queue.empty? do
node = queue.dequeue
print "#{node.data} "
unless node.left.nil?
queue.enqueue(node.left)
end
unless node.right.nil?
queue.enqueue(node.right)
end
end
end
end
class Queue
def initialize
@data = []
end
def enqueue(element)
@data.push(element)
end
def dequeue
@data.shift
end
def empty?
@data.empty?
end
end
class TreeNode
attr_reader :data
attr_accessor :left, :right
def initialize(data)
@data = data
@left, @right = nil, nil
end
end
root = TreeNode.new(10)
root.left = TreeNode.new(5)
root.right = TreeNode.new(14)
root.left.left = TreeNode.new(1)
root.left.right = TreeNode.new(6)
binary_tree = BinaryTree.new(root)
puts "Level order traversal of tree :"
binary_tree.level_order_traversal
puts ""
puts ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment