質問
ノードレベルを指定するノードオブジェクトがあります
public class Node
{
public int Level { get; set; }
}
ノードの順序付きリストを使用してツリービューを構築したい
var nodes = new[]
{
new Node(){Level = 0},
new Node(){Level = 1},
new Node(){Level = 1},
new Node(){Level = 1},
new Node(){Level = 2},
new Node(){Level = 1},
new Node(){Level = 2},
new Node(){Level = 2},
new Node(){Level = 3},
};
これを行う最も効率的な方法は何ですか。
ありがとう
ロハン
解決
Booに続いて、より高いレベルに進むときにノードのスタックを保持する必要があります。現在のノードでレベルが高い場合は、前のノードをスタックにプッシュし、親として使用します。レベルが前のノードよりも低い場合、スタックからn個のノードをポップし(n = previous_level-current_level)、新しいスタックトップを親として使用します。
他のヒント
ノードのリストをループします。インデックス0から始めて、そのノードのレベルを記録します。後続のすべてのインデックスで、最後に記録されたレベルに対してレベルをチェックします。高い場合は、最後に追加したノードのサブノードとして追加します。低い場合、まあ..小文字の問題がある場合..追加する適切なノードを見つけます。
所属していません StackOverflow