树形结构+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节点。

我是从头开始做的,我相信有人做得更好,所以你能帮我弄清楚这个树结构的名字吗?这样我就可以在谷歌上搜索它以获得改进?

树形结构+2个孩子

k-元树可能是最接近您所寻找的树。这通常指的是每个节点最多有k个子节点的树(对于某些k个子节点,例如二叉树是2叉树)。

如果你在寻找每个节点的子节点数量是无限的情况,我不认为它有特定的名称,它只是被称为树(尽管我认为一些资源可能也会称之为k-元树)。


我在这里看到的一个明显的改进之处是为您的结构使用泛型(您应该用泛型数据类型替换IList<Object>,并将Items重命名为Data……可能)。

在不知道你想做什么的情况下,我不能说IList<Object>是否是个好主意——另一种选择可能是用特定类型的成员或IList<SomeOtherType>来创建一个类。

让每个节点存储对其父节点的引用并不常见,但如果需要,可以这样做。

在一些地方,这些结构也被称为n元树。如果你想要示例,你可以在谷歌上搜索Tries和B-tree。

我认为trie最接近于您试图构建的