Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

В-деревья




Представление линейных списков деревьями

Такое представление позволяет за логарифмическое время иметь доступ к узлу дерева как по ключу, так и по порядковому номеру. Для решения этой задачи в каждый узел дерева добавим новое поле по имени Rank. Это поле содержит порядковый номер узла при обратном обходе в дереве, которое из него исходит. На

 
 

рис.46 вместе со значениями ключей в скобках указаны значения поля Rank.

Рис. 46 Представление массива бинарным деревом

Ниже представлен текст функции, выполняющей поиск элемента массива по индексу. Алгоритм предполагает наличие головы у дерева. Собственно дерево является левым поддеревом головы.

struct NODE {

int Info;

NODE *Left;

NODE *Right;

int Rank;

};

//--------------------------------------------

NODE *FindByIndex(NODE *Head, int Index){

// найти узел по индексу (счет от 0)

int k;

NODE *Cur;

k=Index+1;

Cur=Head;

while(Cur!=NULL && k!=Cur->Rank){

if(k < Cur->Rank){

Cur=Cur->Left;

} else {

k-=Cur->Rank;

Cur=Cur->Right;

}

}

return Cur;

}

В-дерево - это структура, очень широко применяемая для поиска данных на внешнем носителе. Ее используют практически все существующие системы управления базами данных.

В-деревом порядка m называется дерево, обладающее следующими свойствами:

- каждый узел имеет не более m сыновей

- каждый узел имеет не менее m/2 сыновей

- корень, если он не лист, имеет не менее двух сыновей.

- все листья расположены на одном уровне

- узел, имеющий n сыновей, содержит n-1 ключей. Ключи расположены в узле в возрастающем порядке.

Рис.47 В-дерево

На рис 47. изображено В-дерево порядка 5. Связи как бы вставлены между ключами так, что указатель pi указывает на поддерево с ключами К, такими, что Ki-1 < K < Ki. Узел, содержащий n ключей и n+1 указателей можно представить как на рис. 48.

Рис.48 Узел В-дерева

 

Для В-дерева существует обобщение обратного обхода: сначала проходим поддерево, исходящее из P0, затем ключ К1, разделя­ющий поддеревья, исходящие из Р0 и Р1, затем поддерево, исходящее из Р1, и так далее. Для дерева на рис. 47 обратный обход дает последовательность:

19 26 35 38 39 41 44 48 62 78 88 99.

Таким образом, обратный обход В-дерева дает сортированную последо­ва­тельность. Рассмотрим операции поиска, вставки и удаления.




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 398; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.