КАТЕГОРИИ: Архитектура-(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; Просмотров: 425; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |