[解決済み] LINQを使った木の検索
2023-04-01 18:32:38
質問
このクラスから作成されたツリーがあります。
class Node
{
public string Key { get; }
public List<Node> Children { get; }
}
すべての子とその子で検索して、条件に合うものを取得したいのですが。
node.Key == SomeSpecialKey
どのように実装すればいいのでしょうか?
どのように解決するのですか?
再帰処理が必要だというのは誤解です。それは は はスタックかキューを必要とし、最も簡単な方法は再帰を使用して実装することです。完全性を期すために、私は非再帰的な答えを提供します。
static IEnumerable<Node> Descendants(this Node root)
{
var nodes = new Stack<Node>(new[] {root});
while (nodes.Any())
{
Node node = nodes.Pop();
yield return node;
foreach (var n in node.Children) nodes.Push(n);
}
}
使用例として、このような表現を使ってください。
root.Descendants().Where(node => node.Key == SomeSpecialKey)
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] LINQを使用してList<T>から要素を削除する
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] LINQのGroup by
-
[解決済み] DataTableに対するLINQクエリ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] 関数を終了するには?
-
[解決済み】Nullableオブジェクトは値を持たなければならない?