我有这样定义的树节点:
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
}
我通过这个关键字创建了树,现在我有时在父树节点有一个孩子的地方分支,那个孩子也可以有一个孩子,在一些节点之后有 2 个孩子。所以我现在想将所有一个子节点(删除它)减少到至少有 2 个子节点的“级别”。
我试过这样的事情:
private void TreeReduction(TreeNode node)
{
while (node.Count() == 1)
{
node = node.GetFirstChild();
}
foreach (var child in node)
{
TreeReduction(child);
}
}
我把它称为主节点。它看起来不错,它正在遍历树,但节点没有被重写。我尝试了 treenode 的参数,但我遇到了 foreach 循环的问题。我该如何修复它以使其正常工作?谢谢