C# B树节点通常是如何表示的?
我已经对我的B-树和2-3-4-树(顺序为4的B-树)进行了一些梳理,我正试图在C#中实现这一点。我的问题是,假设一个B树节点可以包含N-1个项目和N个子树,那么这些节点的典型表示形式是什么?它是一个数组、一系列链表还是我没有考虑过的东西?对于2-3-4树来说,这并不重要。对于大订单,您将使用排序数组和二进制搜索。对于字符串等大小可变的键,trie可能是一个好主意。关于在C#中编写二进制搜索树。与b-树不完全相同,但您可能会发现它很有用。本例中的作者使用泛型集合基类:C# B树节点通常是如何表示的?,c#,data-structures,tree,b-tree,C#,Data Structures,Tree,B Tree,我已经对我的B-树和2-3-4-树(顺序为4的B-树)进行了一些梳理,我正试图在C#中实现这一点。我的问题是,假设一个B树节点可以包含N-1个项目和N个子树,那么这些节点的典型表示形式是什么?它是一个数组、一系列链表还是我没有考虑过的东西?对于2-3-4树来说,这并不重要。对于大订单,您将使用排序数组和二进制搜索。对于字符串等大小可变的键,trie可能是一个好主意。关于在C#中编写二进制搜索树。与b-树不完全相同,但您可能会发现它很有用。本例中的作者使用泛型集合基类: public class
public class Node<T>
{
private T data;
private NodeList<T> neighbors = null;
...
}
public class NodeList<T> : Collection<Node<T>> { ... }
公共类节点
{
私有T数据;
私有节点列表邻居=null;
...
}
公共类节点列表:集合{…}
不要尝试组合子树和项目。您需要2个数组或列表
如果您的订单是固定的,我会使用2个数组。否则,一个
列表
和一个列表
,那么在N为2的情况下,可以有一个子树吗?这通常被称为列表而不是树:)是的,这就是为什么我在我的帖子正文(第二句话)“与b-树不完全相同,但你可能会发现它很有用。”其思想是集合的基本类型只是集合,而不是像OP提到的链接列表或数组。