![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Добавление узлов в Delphi03.08.2012 16:46
Kest
Перед рассмотрением способов удаления узлов из AVL-деревьев в этом разде- type Процедура AddNode, показанная ниже, рекурсивно обращается к дереву в по- исках места для нового элемента. Дойдя до нижнего уровня дерева, процедура со- здает новый узел и добавляет его к дереву. Затем AddNode использует восходящую рекурсию, чтобы перебалансировать дерево. Когда заканчивается рекурсивное обращение, процедура перемещается на- зад по дереву. При каждом возврате она устанавливает параметр grew в значение True, если поддерево, которое она покидает, стало глубже. Процедура использует этот параметр, чтобы определить, сбалансировано ли рассматриваемое поддерево. Если это не так, применяется соответствующее вращение, чтобы перебалансировать поддерево. Рис. 7.11. Различные виды вращения в AVL-деревьях Предположим, процедура в настоящее время исследует узел X. Допустим, что она только что возвратилась из правого поддерева ниже узла X и параметр grew установлен в True, указывая на то, что правое поддерево стало глубже. Если подде- ревья ниже узла X до этого имели одинаковую глубину, то правое поддерево теперь длиннее левого. Дерево сбалансировано в этой точке, но поддерево с корнем в узле X также выросло, так как его правое поддерево стало длиннее. Если левое поддерево ниже узла X было длиннее правого, то сейчас левое и пра- вое поддеревья имеют одинаковую глубину. Глубина поддерева с корнем в узле X не изменилась - она также равна глубине левого поддерева плюс единица. В этом случае процедура AddNode установит переменную grew в значение False, указы- вая, что дерево сбалансировано. И наконец, если правое поддерево ниже узла X было до этого длиннее левого, новый узел разбалансирует дерево в узле X. Процедура AddNode вызывает проце- дуру RebalanceRightGrew, чтобы перебалансировать дерево. Данная процедура выполняет левое вращение или вращение вправо-влево, в зависимости от конкрет- ной ситуации. Процедура AddNode работает по такому же сценарию, если новый элемент до- бавляется в левое поддерево. Следующий код показывает выполнение процедур AddNode и RebalanceRightGrew. Процедура RebalanceLef tGrew аналогич- на процедуре RebalanceRightGrew. procedure TAVLTree.AddNode(var parent : TAVLNode; new_id : Integer; Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |