# a binary search tree of values like Java's TreeSet class Tree def initialize @overall_root = nil end def insert(v) @overall_root = insert_helper(v, @overall_root) end def print print_helper(@overall_root) end private class Node def initialize(data = nil, left = nil, right = nil) @data = data @left = left @right = right end attr_reader :data, :left, :right attr_writer :data, :left, :right end def insert_helper(v, root) if root == nil root = Node.new(v) elsif v < root.data root.left = insert_helper(v, root.left) else root.right = insert_helper(v, root.right) end return root end def print_helper(root) if root print_helper(root.left) puts root.data print_helper(root.right) end end end