B树节点通常如何表示?

问题描述:

我一直在做一些在我的B-树和2-3-4树(B树的顺序为4)上刷新,我试图在C#中实现它。我的问题是,鉴于B-Tree节点可以包含N-1个项目和N个子树,这些节点之一的典型表示是什么?它是一个数组,一系列链表还是我没有考虑过的东西?B树节点通常如何表示?

+0

所以在N是2的情况下,可以有__子树?通常称为列表而不是树:) – 2010-02-07 22:13:16

+0

符文FS:固定:) – 2010-02-07 22:15:02

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

Here's an interesting article on MSDN关于在C#中编写二叉搜索树。与B树不完全相同,但您可能会发现它很有用。本例中的作者使用通用Collection基类:

public class Node<T> 
{ 
    private T data; 
    private NodeList<T> neighbors = null; 
    ... 
} 

public class NodeList<T> : Collection<Node<T>> { ... } 
+0

binary-tree!= B-tree – 2010-02-08 11:58:01

+1

是的,这就是为什么我在我的文章的正文(第二句),“不完全一样的作为B树,但你可能会觉得它有用。“这个想法是,集合的基本类型只是Collection ,而不是像OP提到的LinkedList或Array。 – 2010-02-08 19:23:27

不要尝试组合子树和项目。您将需要阵列或列表<>。

如果您的订单是固定的,我会使用2个数组。否则,List<ItemClass>List<SubTree>