ruby, как сгенерировать древовидную структуру массива формы?

У меня есть массив, который имеет список элементов, как этот

arr = [
  {:id=>1,  :title=>"A",      :parent_id=>nil}, 
  {:id=>2,  :title=>"B",      :parent_id=>nil},
  {:id=>3,  :title=>"A1",     :parent_id=>1}, 
  {:id=>4,  :title=>"A2",     :parent_id=>1},
  {:id=>5,  :title=>"A11",    :parent_id=>3}, 
  {:id=>6,  :title=>"12",     :parent_id=>3},
  {:id=>7,  :title=>"A2=121", :parent_id=>6}, 
  {:id=>8,  :title=>"A21",    :parent_id=>4},
  {:id=>9,  :title=>"B11",    :parent_id=>2}, 
  {:id=>10, :title=>"B12",    :parent_id=>2},
   ...
]

Еслиparent_id являетсяnil тогда его должен быть родительский узел, еслиparent_id не являетсяnil тогда это должно быть под конкретным родителем.

На основеid а такжеparent_idЯ хочу дать ответ, как это:

-A
  -A1
    -A11
    -A12
      -A123
  -A2
    -A21
-B
  -B1
    -B11
    -B12

Как я могу генерировать ответы, упомянутые выше?

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос