2010-02-07 5 views
2

Я занимаюсь чисткой на моем B-Tree и дереве 2-3-4 (дерево B с порядком 4), и я пытаюсь реализовать это на C#. Мой вопрос к вам, учитывая, что узел B-Tree может содержать N-1 количество элементов и N поддеревьев, каково типичное представление для одного из этих узлов? Это массив, серия связанных списков или что-то, что я не рассматривал?Как обычно представлены узлы дерева B?

+0

так что в случае, когда N равно 2, может быть _one_ поддерево? это обычно называется списком, а не деревом :) –

+0

Rune FS: Fixed :) –

ответ

2

Для дерева 2-3-4 это не имеет большого значения. Для больших заказов вы должны использовать отсортированный массив и бинарный поиск. Для ключей с переменным размером, таких как Strings, trie может быть хорошей идеей.

0

Here's an interesting article on MSDN о создании двоичного дерева поиска в C#. Не совсем то же самое, что и b-tree, но вы можете найти это полезным. Автор в этом случае использует общий базовый класс коллекции:

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

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

binary-tree! = B-Tree –

+1

Да, вот почему у меня в теле моего поста (второе предложение): «Не совсем то же самое как b-дерево, но вы можете найти это полезным ». Идея заключается в том, что базовый тип для коллекции - это просто Collection , а не LinkedList или Array, как указано в OP. –

1

Не пытайтесь комбинировать поддеревья и предметы. Вам понадобятся массивы или список <>.

Если ваш заказ исправлен, я бы использовал 2 массива. В противном случае, a List<ItemClass> и a List<SubTree>

Смежные вопросы