私はこのように定義されたツリーノードを持っています:
class TreeNode : IEnumerable<TreeNode>
{
private readonly Dictionary<string, TreeNode> _childs = new Dictionary<string, TreeNode>();
public readonly string ID;
public TreeNode Parent { get; private set; }
public int Level { get; set; }
public TreeNode(string id)
{
this.ID = id;
}
// some other methods
}
これでキーワードからツリーを作成しましたが、親ツリーノードに1つの子があり、その子にも1つの子があり、一部のノードの後に2つの子があるブランチがあります。したがって、ここで、その1つの子すべてを(削除して)、少なくとも2つの子ノードが存在する「レベル」に減らしたいと思います。
私はこのようなことを試みました:
private void TreeReduction(TreeNode node)
{
while (node.Count() == 1)
{
node = node.GetFirstChild();
}
foreach (var child in node)
{
TreeReduction(child);
}
}
そしてそれをメインノードと呼びます。見た目は大丈夫で、ツリーを通過していますが、ノードは書き換えられません。treenodeのパラメーターを試しましたが、foreachループに問題があります。どうすればそれを修正して機能させることができますか?ありがとう