「アルゴリズムとデータ構造」紀平拓男/春日伸弥 著 (http://www.sbcr.jp/products/4797324198.html?sku=4797324198)第6章において 、2分木へのデータの追加のコードが紹介されています。
それを今Ruby版に置き換えたつもりなのですが、二つ目のデータの追加のときに上手く動かなくて困っています。
どこを修正すればよいか教えていただけないでしょうか?

# -*- coding: cp932 -*-

# Node Class
class Node
  attr_reader :value, :left, :right
  def initialize(val)
    @value = val   # ノードが保持する値
    @left = nil    # 左側のノード
    @right = nil   # 右側のノード
  end 
end

# ノードを生成する
def create_new_node(val)
  newNode = Node.new(val)
  return newNode
end

# ノードの追加
def insert_tree(num, node = nil)
  # 1つも挿入されていない場合
  if node == nil
    @tree_root = create_new_node(num)
    return
  end 
  # num が現在の node の値よりも小さい場合
  if node.value > num
    if node.left != nil
      insert_tree(num, node.left)
    else
      node.left = create_new_node(num)
    end
  # num が現在の node の値以上の場合
  else
    if node.right != nil
      insert_tree(num, node.right)
    else
      node.right = create_new_node(num)
    end
  end
end

def print_tree(depth, node = nil)
  if node == nil
    return
  end
  print_tree(depth + 1, node.left)
  i = 0
  while i < depth
    printf "   "
    i += 1
  end
  printf("%d\n",node.value)
  print_tree(depth + 1, node.right)
end

def main
  action = nil
  while action != 0
    print_tree(0, @tree_root)
    printf("実行する操作のタイプを入力してください。\n 1 :追加\t2 :検索\t3 :削除\t それ以外:終了>")
    action = gets.chomp.to_i
    case action
      when 1
        printf("1 ~100の範囲で,追加する数字を入力してください:")
        i = gets.chomp.to_i
        if (i < 1 || i > 100)
          continue
        end
        insert_tree(i, @tree_root)
      else
        break
    end
  end
end

main