树形结构+2个孩子
本文关键字:孩子 结构 | 更新日期: 2023-09-27 18:00:19
我在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,我对几乎每一个操作都使用递归,从按名称、Id或引用获取节点到删除节点,在我的情况下,当删除节点时,我会将Items和children Properties都添加到Parent节点。
我是从头开始做的,我相信有人做得更好,所以你能帮我弄清楚这个树结构的名字吗?这样我就可以在谷歌上搜索它以获得改进?
k-元树可能是最接近您所寻找的树。这通常指的是每个节点最多有k个子节点的树(对于某些k个子节点,例如二叉树是2叉树)。
如果你在寻找每个节点的子节点数量是无限的情况,我不认为它有特定的名称,它只是被称为树(尽管我认为一些资源可能也会称之为k-元树)。
我在这里看到的一个明显的改进之处是为您的结构使用泛型(您应该用泛型数据类型替换IList<Object>
,并将Items
重命名为Data
……可能)。
在不知道你想做什么的情况下,我不能说IList<Object>
是否是个好主意——另一种选择可能是用特定类型的成员或IList<SomeOtherType>
来创建一个类。
让每个节点存储对其父节点的引用并不常见,但如果需要,可以这样做。
在一些地方,这些结构也被称为n元树。如果你想要示例,你可以在谷歌上搜索Tries和B-tree。
我认为trie最接近于您试图构建的