我有一个安排在树结构中的类,可选择包括自己的列表,如:
class MyClass
{
List<MyClass> MyClassList;
...
}
元素是否可以调用其父集合?像,
class MyClass
{
List<MyClass> MyClassList;
...
private void AddItemToParentCollection()
{
parent.MyClassList.Add(new MyClass());
}
}
我想我可以通过遍历树直到它找到自己来编写一个函数来告诉一个类它在树中的位置(以及它的父级所在的位置),但我希望它有一个更简洁的方法。
答案 0 :(得分: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());
}