Skip to content

Instantly share code, notes, and snippets.

@vderyagin
Last active December 11, 2015 02:48
Show Gist options
  • Select an option

  • Save vderyagin/4532726 to your computer and use it in GitHub Desktop.

Select an option

Save vderyagin/4532726 to your computer and use it in GitHub Desktop.
traversal of binary tree
class Node
attr_accessor :data, :left, :right
def initialize(d, l = nil, r = nil)
self.data = d
self.left = l
self.right = r
end
end
def traverse_preorder(tree)
return if tree.nil?
puts tree.data
traverse_preorder(tree.left)
traverse_preorder(tree.right)
end
def traverse_inorder(tree)
return if tree.nil?
traverse_inorder(tree.left)
puts tree.data
traverse_inorder(tree.right)
end
def traverse_postorder(tree)
return if tree.nil?
traverse_postorder(tree.left)
traverse_postorder(tree.right)
puts tree.data
end
tree = Node.new(1,
Node.new(2,
Node.new(3,
Node.new(4),
Node.new(5,
Node.new(6),
Node.new(7))),
Node.new(8,
Node.new(9),
Node.new(10))
),
Node.new(11,
Node.new(12),
Node.new(13)))
traverse_preorder(tree)
puts
traverse_inorder(tree)
puts
traverse_postorder(tree)
# >> 1
# >> 2
# >> 3
# >> 4
# >> 5
# >> 6
# >> 7
# >> 8
# >> 9
# >> 10
# >> 11
# >> 12
# >> 13
# >>
# >> 4
# >> 3
# >> 6
# >> 5
# >> 7
# >> 2
# >> 9
# >> 8
# >> 10
# >> 1
# >> 12
# >> 11
# >> 13
# >>
# >> 4
# >> 6
# >> 7
# >> 5
# >> 3
# >> 9
# >> 10
# >> 8
# >> 2
# >> 12
# >> 13
# >> 11
# >> 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment