Опубликован: 26.09.2006 | Доступ: свободный | Студентов: 1815 / 510 | Оценка: 4.25 / 4.12 | Длительность: 17:09:00
ISBN: 978-5-9556-0066-6
Специальности: Программист, Математик
Лекция 10:

Поисковые деревья

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >

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

Общие сведения

Деревья поиска предназначены для представления словарей как абстрактного типа данных. Как и приоритетные очереди, они представляют взвешенные множества, но с другим набором операций, а именно:

  • Search — поиск элемента с заданным ключом.
  • Minimum — поиск элемента с минимальным ключом.
  • Maximum — поиск элемента с максимальным ключом.
  • Predecessor — поиск элемента с предыдущим ключом.
  • Successor — поиск элемента со следующим ключом.
  • Insert — вставка элемента со своим ключом.
  • Delete — удаление указанного элемента.

Считается, что каждый элемент словаря имеет ключ (вес), принимающий значение из какого-либо линейно упорядоченного множества. Таким множеством может быть, например, числовое множество или множество слов в некотором алфавите. В последнем случае в качестве линейного порядка можно рассматривать лексикографический порядок. Таким образом, дерево поиска может быть использовано и как словарь, и как приоритетная очередь.

Время выполнения основных операций пропорционально высоте дерева. Если каждый внутренний узел двоичного дерева имеет ровно двух потомков, то его высота и время выполнения основных операций пропорциональны логарифму числа узлов. Напротив, если дерево представляет собой линейную цепочку из n узлов, это время вырастает до \Theta(n). Известно, что высота случайного двоичного дерева поиска есть O(\log n), так что в этом случае время выполнения основных операций есть \Theta(\log
n).

Конечно, возникающие на практике двоичные деревья поиска могут быть далеки от случайных. Однако, приняв специальные меры по балансировке деревьев, мы можем гарантировать, что высота деревьев с n узлами будет O(\log n). Ниже рассмотрим один из подходов такого рода (красно-черные деревья и, как частный случай, АВЛ-деревья). Будут рассмотрены также Б-деревья, которые особенно удобны для данных, хранящихся во вторичной памяти с произвольным доступом (на диске).

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

Двоичным деревом поиска называется корневое двоичное дерево, каждому узлу которого поставлен в соответствие взвешенный элемент. При этом для каждого узла x выполняется следующее условие:

Веса всех узлов левого поддерева в дереве с корнем x меньше, а веса узлов его правого поддерева больше веса узла x или равны ему.

Представляется такое дерево узлами следующего вида:

\eq*{
{\rm Node} = ({\rm element}, {\rm key}, {\rm left}, {\rm right},
{\rm parent}).
}

Доступ к дереву T осуществляется с помощью ссылки {\rm
root}.

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Антон Сиротинкин
Антон Сиротинкин

на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно...