Skip to content

Instantly share code, notes, and snippets.

@Leohige
Last active June 1, 2017 02:56
Show Gist options
  • Save Leohige/c0874aa09d57c0c64533c3634b1da623 to your computer and use it in GitHub Desktop.
Save Leohige/c0874aa09d57c0c64533c3634b1da623 to your computer and use it in GitHub Desktop.
class Node
attr_accessor :key, :left, :right
def key=(key)
@key = keya
end
def left=(left)
@left = left
end
def right=(right)
@right = right
end
end
class Tree
attr_accessor :root
def initialize
self.root = nil
end
def find(n)
end
def add(key)
if self.root.nil?
node = Node.new()
node.key = key
self.root = node
else
self.add_aux(self.root, key)
end
end
def add_aux(root, key)
if key < root.key
if root.left.nil?
node = Node.new
node.key = key
root.left = node
else
self.add_aux(root.left, key)
end
elsif key > root.key
if root.right.nil?
node = Node.new
node.key = key
root.right = node
else
self.add_aux(root.right, key)
end
end
end
def prefix(node = self.root)
if !node.nil?
puts node.key
self.prefix(node.left)
self.prefix(node.right)
end
end
def posfix(node = self.root)
if !node.nil?
self.posfix(node.left)
self.posfix(node.right)
puts node.key
end
end
def infix(node = self.root)
if !node.nil?
self.infix(node.left)
puts node.key
self.infix(node.right)
end
end
def per_level(node = self.root)
if node.nil?
return
end
queue = []
queue.push(node)
while(!queue.empty?)
node = queue.first
queue.shift
puts node.key
if(!node.left.nil?)
queue.push(node.left)
end
if(!node.right.nil?)
queue.push(node.right)
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment