2010-02-07 46 views
2

我一直在做一些在我的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

對於2-3-4樹,它並不重要。對於大訂單,您可以使用排序數組和二進制搜索。對於字符串等可變大小的鍵,一個trie可能是一個好主意。

0

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

1

不要嘗試組合子樹和項目。您將需要陣列或列表<>。

如果您的訂單是固定的,我會使用2個數組。否則,List<ItemClass>List<SubTree>