!!! IMPORTANT: DO NOT READ! This answer is in progress
Node = Struct.new(:value, :left, :right) do
def add(num)
right_add(num) if num > value
left_add(num) if num < value
end
def right_add(num)
# p "!!! #{value} right nil?: #{right.nil?}"
if not right.nil?
# p "!!! traverse right"
right.add(num)
return
end
# p "!!! #{value} add right node #{num}"
self.right = Node.new(num)
end
def left_add(num)
# p "!!! #{value} left nil?: #{left.nil?}"
if not left.nil?
# p "!!! traverse left"
left.add(num)
return
end
# p "!!! #{value} add left node #{num}"
self.left = Node.new(num)
end
end