質問

ノードレベルを指定するノードオブジェクトがあります

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から始めて、そのノードのレベルを記録します。後続のすべてのインデックスで、最後に記録されたレベルに対してレベルをチェックします。高い場合は、最後に追加したノードのサブノードとして追加します。低い場合、まあ..小文字の問題がある場合..追加する適切なノードを見つけます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top