儿童或父母树结构

时间:2009-06-09 16:06:08

标签: c# data-structures tree

我正在开发一个用于生成树结构的类。树的每个节点都需要知道父母是谁以及孩子是谁。用于跟踪每个节点父节点和子节点的字段在基本Node类之外是不可访问的。

现在我有AddChild的方法和Remove child。因此,这也设置了相关实例的父字段。

所以我现在想知道的是,切换这个和设置方法会更好或更糟的是,类的用户必须调用Node.SetParent(Node parentNode)和Node.ClearParent(Node oldParentNode)方法代替。

如果您正在跟踪父母和子女的关系,为什么您会选择将子女关系设置为父母,反之亦然,或者甚至是否重要?

3 个答案:

答案 0 :(得分:1)

在任何一种情况下,当您将一个节点附加到树时,您将需要对所讨论的父节点和子节点的引用,所以我不知道它会如何产生影响,因为任何一种方式都将是同样可能在所有情况下。

我建议找出你的逻辑最有意义的方向(也就是更容易考虑从树叶或树根构建树)并继续使用。

答案 1 :(得分:0)

这些决定通常取决于课程的使用方式。如果典型的scenerio用于从父节点向下构建树,那么使用AddChild方法通常是最好的,如果用户通过相反的方式构建它们,则给出SetParent方法。如果需要两者,只要在课程内部完成适当的簿记,就可以实现两者。

(旁注:我通常从父母那里建造树木)

答案 2 :(得分:0)

我认为你需要这三种方法。构建树时,AddChild方法看起来更自然。删除节点有两个原因。一种是摆脱它,另一种是重新组织树(将子树移动到另一个分支)。删除时,RemoveChild效果很好。但重组可以使用SetParent方法来避免进行两次调用。 SetParent也可能成为各种交易。