树结构+2个孩子

时间:2014-04-26 04:42:48

标签: c# data-structures tree

我在c#中实现了一个树结构,其中一个节点如下所示

public class Node
{
   public int ID{get;set;}
   public string Name{get;set;}
   public Node Parent {get;set;}
   public IList<Node> Children{get;set;}
   public IList<Object> Items{get;set;}
   public IEnumerable<Ancestors> {get{return this.GetAncestors();}}
}

我想改进我的结构,但我不确定这种树被称为什么,它不是二叉树,因为子计数变化并且可以超过2,我使用递归几乎每个操作得到一个node by Name,Id或删除节点的引用,在我删除节点的情况下,我将Items和Children Properties添加到Parent节点。

我是从头开始做的,我确信有人做得更好,所以请你帮我看一下这个树结构的名称,以便我可以谷歌进行改进吗?

2 个答案:

答案 0 :(得分:2)

k-ary tree可能是您最接近的目标。这通常是指一个树,其中每个节点最多有k个子节点(对于某些k,例如二叉树是2-ary树)。

如果您正在寻找每个节点的子节点数无限制的情况,我不相信它有一个特定的名称,它只是被称为树(虽然我想有些资源可能称之为k-ary树也是。)


我在这里看到的一个显而易见的改进地点是对您的结构使用generics(您应该将IList<Object>替换为通用数据类型,并将Items重命名为Data ......可能)。

在不知道你想做什么的情况下,我不能说IList<Object>是否是一个好主意 - 另一种选择可能是让一个类具有特定类型的成员,或者IList<SomeOtherType>。< / p>

让每个节点存储对其父节点的引用不是那么典型,但是如果需要它,可以完成它。

答案 1 :(得分:1)

有些地方这些结构也被称为n-ary树。如果您需要示例,可以谷歌搜索Tries和B-tree。

我认为trie最接近你想要构建的东西