Двоичные деревья поиска Двоичное дерево поиска – это, как следует из названия – двоичное дерево. Это дерево может быть представлено как связанная структура.

Презентация:



Advertisements
Похожие презентации
Лекция 8 Красно-черные деревья План лекции 1.Определение красно-черного дерева и его высота. 2.Вращения 3.Вставка элемента, восстановление структуры дерева.
Advertisements

Рекурсивные структуры данных Списки, двоичные деревья.
Augmenting Data Structures, Dynamic Order Statistics Клишин Алексей, 86м22 Линева Татьяна, 85м1 Макарова Татьяна, 85м1.
Древовидная модель оказывается довольно эффективной для представления динамических данных с целью быстрого поиска информации. Деревья являются одними из.
Задача 1. Какое значение будет иметь n в результате выполнения следующего фрагмента алгоритма? n:=5 m:=17 если nm то n:=n*m иначе n:=n-m все.
Двоичные деревья поиска. Очередь с приоритетами Федор Царев Спецкурс «Олимпиадное программирование» Лекция , Санкт-Петербург, Гимназия.
Лекция 9 Б-деревья План лекции 1.Структуры данных на диске 2.Определение Б-дерева. 3.Высота Б-дерева. 4.Поиск в Б-дереве 5.Создание пустого дерева. 6.Разбиение.
AVL-Trees COMP171 Fall AVL Trees / Slide 2 Balanced binary tree * The disadvantage of a binary search tree is that its height can be as large as.
SPLAY TREE The basic idea of the splay tree is that every time a node is accessed, it is pushed to the root by a series of tree rotations. This series.
Алгоритмы поиска путей на графах дорог СПбАУ, 12 мая 2011.
Операции со строками Паскаль 9 класс. S1:=ABCDEFGH; S2:=Мама мыла раму; k1:=length(s1); k2:=length(s2); Что получим в результате? S1:=ABCDEFGH; S2:=abcdefgh;
Деревья1 Структуры и алгоритмы обработки данных, 1 Лекция 6 ДЕРЕВЬЯ (продолжение) 1.Нерекурсивные процедуры обхода бинарных деревьев 2.Представления.
AVL Trees CSE 373 Data Structures Lecture 8. 12/26/03AVL Trees - Lecture 82 Readings Reading Section 4.4,
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Алгоритмы поиска данных Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
PHP как язык программированияPHP как язык программирования.
Date: System_Recipes_7.1 SIMATIC HMI Siemens AG All rights reserved. SITRAINTraining for Automation and Drives Рецептуры.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Вопрос 1 Ответ 1 Правильный ответ Ответ 3 Ответ 4.
Одномерные массивы Введение. I.Описание Массив – это фиксированное кол - во элементов одного и того же типа, объединенных одним именем, каждый элемент.
Б-деревья Лекция 19. Б-деревья Б-деревья – сбалансированные деревья, обеспечивающие эффективное хранение информации на дисках и других устройствах с прямым.
Транксрипт:

Двоичные деревья поиска Двоичное дерево поиска – это, как следует из названия – двоичное дерево. Это дерево может быть представлено как связанная структура данных, каждый узел этой структуры – объект, содержащий ключ (key), и указатели left, right, p (левый ребенок, правый ребенок и родитель), если ребенка или родителя нет, то записывается NIL. Ключи хранятся с соблюдением свойства упорядоченности. Если вершина y находится в левом поддереве вершины x, key[y]>=key[x], если в правом, то key[y]>=key[x].

Двоичные деревья поиска

Печать всех ключей, входящих в дерево T c корнем root[T] INORDER-TREE-WALK(x) 1 if x != NIL 2 then INORDER-TREE-WALK (left[x]) 3 print key[x] 4 INORDER-TREE-WALK (right[x])

Поиск в двоичном дереве TREE-SEARCH (x, k) 1 if x = NIL or k = key[x] 2 then return x 3 if k < key[x] 4 then return TREE- SEARCH (left[x], k) 5 else return TREE- SEARCH (right[x], k) ITERATIVE-TREE- SEARCH (x,k) 1 while x != NIL and k!= key[x] 2 do if k < key[x] 3 then x = left[x] 4 else x = right[x] 5 return x

Минимум и максимум TREE-MINIMUM (x) 1 while left[x] != NIL 2 do x = left[x] 3 return x TREE-MAXIMUM(x) 1 while right[x] !=NIL 2 do x = right[x] 3 return x

Следующий элемент TREE SUCCESSOR(x) 1 if right[x] != NIL 2 then return TREE-MINIMUM(right[x]) 3 y = p[x] 4 while y != NIL and x = right[y] 5 do x = y 6 y = p[y] 7 return y

Добавление элемента TREE-INSERT(T,z) 1 y NIL 2 x root[T] 3 while x NIL 4 do y x 5 if key[z] < key[x] 6 then x left[x] 7 else x right[x] 8 p[z] y 9 if y = NIL 10 then root[T] z 11 else if key[z] < key[y] 12 then left[y] z 13 else right[y] z

Добавление элемента с ключом 13

Удаление элемента TREE-DELETE(T, z) 1 if left[z] = NIL or right[z] = NIL 2 then y z 3 else y TREE- SUCCESSOR(z) 4 if left[y] NIL 5 then x left[y] 6 else x right[y] 7 if x NIL 8 then p[x] p[y] 9 if p[y] = NIL 10 then root[T] x 11 else if y = left[p[y]] 12 then left[p[y]] x 13 else right[p[y]] x 14 if y z 15 then key[z] key[y] 16 If y has other fields, copy them, too. 17 return y

Удаление вершины z из двоичного дерева