1

我有一个类,它通过可选地包含自身的列表来排列在树结构中,例如:

class MyClass
{
    List<MyClass> MyClassList;
    ...
}

元素有什么方法可以调用它的父集合?像,

class MyClass
{
    List<MyClass> MyClassList;
    ...

    private void AddItemToParentCollection()
    {
        parent.MyClassList.Add(new MyClass());
    }
}

我想我可以编写一个函数,通过遍历树直到找到自己,告诉类它在树中的位置(以及它的父级),但我希望有一种更简洁的方法。

4

1 回答 1

1
class Node
{
    Node parent;
    List<Node> children = new List<Node>();

    public void Add(Node child)
    {
        if (child.Parent != null)
            // throw exception or call child.Parent.Remove(child)

        children.Add(child);
        child.Parent = this;
    }

    public void Remove(Node child)
    {
        if (child.Parent != this)
           // throw exception

        children.Remove(child);
        child.Parent = null;
    }
}

使用这种结构,您可以将项目添加到父集合(不确定它应该是子节点的责任):

private void AddItemToParentCollection()
{
    if (Parent == null)
       // throw exception 

    Parent.Add(new Node());
}
于 2013-01-05T15:07:46.870 回答