Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# B树节点通常是如何表示的?_C#_Data Structures_Tree_B Tree - Fatal编程技术网

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

我已经对我的B-树和2-3-4-树(顺序为4的B-树)进行了一些梳理,我正试图在C#中实现这一点。我的问题是,假设一个B树节点可以包含N-1个项目和N个子树,那么这些节点的典型表示形式是什么?它是一个数组、一系列链表还是我没有考虑过的东西?

对于2-3-4树来说,这并不重要。对于大订单,您将使用排序数组和二进制搜索。对于字符串等大小可变的键,trie可能是一个好主意。

关于在C#中编写二进制搜索树。与b-树不完全相同,但您可能会发现它很有用。本例中的作者使用泛型集合基类:

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提到的链接列表或数组。