-1

このツリーを構築する必要があります:

result = [
  ['t9'],
  ['t3',   
    ['t4'],
    ['t8',   
      ['t6'],
      ['t1',
        ['t5']
      ]
    ]
  ],
  ['t7',
    ['t2']
  ]
]

これらのオブジェクトから:

{:id => 't1', :tg => 't8', :rank => 2}
{:id => 't2', :tg => 't7', :rank => 1}
{:id => 't3', :tg => nil, :rank => 2}
{:id => 't4', :tg => 't3', :rank => 1}
{:id => 't5', :tg => 't1', :rank => 1}
{:id => 't6', :tg => 't8', :rank => 1}
{:id => 't7', :tg => nil, :rank => 3}
{:id => 't8', :tg => 't3', :rank => 2}
{:id => 't9', :tg => nil, :rank => 1}

tg自己参照協会です。 rank配列内の位置/インデックスです

アイデアはありますか (ルビーで推奨)?

4

3 に答える 3

0

木のようなものを構築しているように聞こえます。アルゴリズムは次のように結論付けることができます。

  1. :tg が nil であるすべてのノードを検索すると、[t3, t7, t9] が得られます。
  2. :tg が [t3, t7, t9] 内にあるすべてのノードを検索し、[t4, t8] を取得します。
  3. [t4, t8] 内の :tg を持つすべてのノードを見つけます ...
于 2013-11-01T10:54:43.287 に答える