Справочник от Автор24
Поделись лекцией за скидку на Автор24

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

  • 👀 200 просмотров
  • 📌 179 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Бинарные деревья поиска» pdf
Структура данных ЛЕКЦИЯ 9 А.Асланян [email protected] 2 Бинарные деревья поиска   Бинарное дерево поиска представляют собой структуру данных поддерживающий следующие операции  Поиск  Вставка  Удаление  Минимальный элемент  Максимальный элемент  Следующий элемент  Предыдущий элемент Основные операции в бинарном дереве поиска выполняются за время, пропорциональное его высоте 3 Бинарные деревья поиска  Бинарное дерево поиска является бинарным деревом  Каждый узел является объектом и содержит  Ключ  Сопутствующие данные  Указатель на левое поддерево  Указатель на правое поддерево  Указатель на родитель  Для каждого узла, ключ больше всех ключей левого поддерева и меньше всех ключей правого поддерева  Если дочерний или родительский узел отсутствуют, соответствующее поле содержит значение NIL 4 Примеры 5 Бинарные деревья поиска  Мы будем предполагать, что в любом двоичном дереве мы не храним повторяющиеся значения, если не указано иное  Свойство бинарного дерева поиска позволяет вывести все ключи в отсортированном порядке с помощью симметричного обхода дерева  Пример - 3 15 22 23 29 40 42 46 50 57 59 65 73 88 91 6 Бинарные деревья поиска  Обратите внимание, что мы уже можем использовать эту структуру для поиска: изучить корневой узел и, если ключ не совпадает тем, что ищем:  Если объект меньше ключа корневого узла, продолжать поиск в левом поддереве  В противном случае, продолжать поиск в правом поддереве 7 Бинарные деревья поиска  К сожалению, можно построить такое бинарное дерево поиска, что поиск займет линейное время от количества элементов 8 Бинарные деревья поиска  Все эти двоичные деревья поиска хранят одни и те же данные 9 Поиск минимального элемента  Самый «левый» элемент  Вычислительная сложность O(h) 10 Поиск максимального элемента  Самый «правый» элемент  Вычислительная сложность O(h) 11 Поиск  Поиск ключа 𝑘  𝑥 = 𝑟𝑜𝑜𝑡  Пока 𝑥 ≠ 𝑁𝐼𝐿 и 𝑘 ≠ 𝑥. 𝑘𝑒𝑦   Если 𝑘 < 𝑥. 𝑘𝑒𝑦 ⇒ 𝑥 = 𝑥. 𝑙𝑒𝑓𝑡  В противном случае 𝑥 = 𝑥. 𝑟𝑖𝑔ℎ𝑡 return 𝑥 12 Поиск  Поиск ключа 𝑘  𝑥 = 𝑟𝑜𝑜𝑡  Пока 𝑥 ≠ 𝑁𝐼𝐿 и 𝑘 ≠ 𝑥. 𝑘𝑒𝑦   Если 𝑘 < 𝑥. 𝑘𝑒𝑦 ⇒ 𝑥 = 𝑥. 𝑙𝑒𝑓𝑡  В противном случае 𝑥 = 𝑥. 𝑟𝑖𝑔ℎ𝑡 return 𝑥  Поиск 81  Вычислительная сложность O(h) 13 Поиск  Поиск ключа 𝑘  𝑥 = 𝑟𝑜𝑜𝑡  Пока 𝑥 ≠ 𝑁𝐼𝐿 и 𝑘 ≠ 𝑥. 𝑘𝑒𝑦    Если 𝑘 < 𝑥. 𝑘𝑒𝑦 ⇒ 𝑥 = 𝑥. 𝑙𝑒𝑓𝑡  В противном случае 𝑥 = 𝑥. 𝑟𝑖𝑔ℎ𝑡 return 𝑥 Поиск 35 14 Вставка   Как поиск, мы пройдем через дерево  Если мы найдем объект уже в дереве, возврат  В противном случае мы получим пустой узел  Объект будет вставлен в это место Вычислительная сложность – O(h) 15 Вставка  Вставить 52 16 Вставка  Вставить 52 17 Вставка  Вставить 40 18 Вставка  Вставить 40 19 Удаление  Удаляемый узел не всегда будет листом  Сначала нужно найти удаляемый узел  Есть три возможных сценария:  Узел является листовым узлом  У него ровно один дочерний узел  У него два дочерних узлов 20 Удаление  Стратегия удаления узла 𝑧  Если у 𝑧 нет дочериных узлов (лист), то мы удаляем его, и заменяем 𝑧 на NIL  Если у 𝑧 только один дочерний узел, то мы удаляем 𝑧 создавая новую связь между родительским и дочерним узлами узла 𝑧  Если у 𝑧 два дочерних узла, то мы находим следующий за ним узел 𝑦 (самый «левый» элемент в правом поддереве). Заменяем ключ и сопутствующие данные 𝑧-а на 𝑦. Остаток исходного правого поддерева 𝑧 становится новым поддеревом 𝑦, а левое поддерево 𝑧 становится новым левым поддеревом 𝑦 21 Удаление  Удалить 75 22 Удаление  Удалить 75 23 Удаление  Удалить 40 24 Удаление  Удалить 40 25 Удаление  Удалить 8 26 Удаление  Удалить 8 27 Удаление  Удалить 39  Нет разницы в продвижении одного узла или поддерева 28 Удаление  Удалить 39  Обратите внимание, что порядок все еще поддерживается 29 Удаление  Удалить 99 30 Удаление  Удалить 99 31 Удаление  Удалить 42  Заменить 42 минимальным объектом в правом поддереве  Удалить этот объект 32 Удаление  Удалить 42  Заменить 42 минимальным объектом в правом поддереве  Удалить этот объект 33 Удаление  Удалить 42  Заменить 42 минимальным объектом в правом поддереве  Удалить этот объект 34 Удаление  Удалить 42  Заменить 42 минимальным объектом в правом поддереве  Удалить этот объект 35 Удаление  Обратим внимание, что дерево остается бинарным деревом поиска 36 Удаление  Удалить 47  Заменить 47 минимальным объектом в правом поддереве  Удалить этот объект 37 Удаление  Удалить 47  Заменить 47 минимальным объектом в правом поддереве  Удалить этот объект 38 Удаление  Удалить 47  Заменить 47 минимальным объектом в правом поддереве  Удалить этот объект 39 Удаление  Удалить 47  Заменить 47 минимальным объектом в правом поддереве  Удалить этот объект 40 Следующий элемент  Найти следующий элемент 𝑥-а  Если 𝑥 имеет правое поддерево, то найти минимальный элемент в правом поддереве (самый «левый»)  В противном случае  𝑦 = 𝑥. 𝑝  Пока 𝑦 ≠ 𝑁𝐼𝐿 и 𝑥 == 𝑦. 𝑟𝑖𝑔ℎ𝑡    𝑥=𝑦  𝑦 = 𝑦. 𝑝 Возвращать 𝑦 Вычислительная сложность – O(h) 41 Следующий элемент  Если существует правое поддерево 42 Следующий элемент  Если не существует правое поддерево то следующий элемент находится в пути от рассматриваемого элемента до корня 43 Предыдущий элемент  Найти предыдущий элемент 𝑥-а  Если 𝑥 имеет левое поддерево, то найти максимальный элемент в левом поддереве (самый «правый»)  В противном случае  𝑦 = 𝑥. 𝑝  Пока 𝑦 ≠ 𝑁𝐼𝐿 и 𝑥 == 𝑦. 𝑙𝑒𝑓𝑡    𝑥=𝑦  𝑦 = 𝑦. 𝑝 Возвращать 𝑦 Вычислительная сложность – O(h) 44 Вычислительная сложность - O(h)  Основные операции бинарного дерева поиска имеют вычислительную сложность O(h)  Если дерево «похоже» связанного списка вычислительная сложность - O(n)  Наша цель – умешить вычислительную сложность в наихудшем случае в О(log 2 𝑛)
«Бинарные деревья поиска» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot