通过C#更新树结构

时间:2013-02-21 15:58:00

标签: c# tree

我的应用程序中有一个树状结构。它不是真正的树数据结构,这是我的问题的一部分。相反,它是List<Child>,其中每个Child都有ParentIDChild结构如下所示:

public class Child
{
  public int ID { get; set; }

  public int BranchID { get; set; }

  public int? ParentID { get; set; }
}

我有一些情况,我有一个“破碎”的树。换句话说,ParentID与List<Child>中的任何项目都不匹配。如果ParentID为null,我知道Child是树分支的根项。但是,如果ParentID有一个值,并且与List&lt;&gt;中的任何子ID都不匹配,那么我需要将其从List<Child>中删除。目前,我正在尝试以下方法:

List<Child> children = GetTree();
foreach (Child child in children)
{
    if (child.ParentID.HasValue == false)
        RemoveBranch(child);
}

void RemoveBranch(Child child)
{
    foreach (Child child in children)
    {
      if (child.ParentID.HasValue)
      {
        if (child.ParentID.Value == child.ID)
            RemoveBranch(child);
        children.Remove(child);
      }
    }
}

出于某种原因,这不起作用。我无法弄清楚原因。

0 个答案:

没有答案
相关问题