Key to CSE341 Section #9 Problems 1. One possible solution appears below: class Point def initialize (x = 0, y = 0) @x = x @y = y end attr_reader :x, :y attr_writer :x, :y def to_s "(#{@x}, #{@y})" end end 2. One possible solution appears below: class Tree def initialize() @overallRoot = nil end def insert(v) @overallRoot = insert_helper(v, @overallRoot) end def print() print_helper(@overallRoot) end private # beginning of private definitions 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 then 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 != nil then print_helper root.left puts root.data print_helper root.right end end end 3. One possible solution appears below: t = Tree.new 10.times do n = rand(100) print "inserting ", n, "\n" t.insert n end t.print An alternative way to print would be: puts "inserting " + n.to_s 4. The Ruby interpreter will tell us the answers if we type in: 3.8.class 3.8.class.class 3.8.class.class.methods 3.8.class.superclass