9.3.3. Использование двоичного дерева как справочной таблицы
9.3.3. Использование двоичного дерева как справочной таблицы
Пусть дерево уже отсортировано. Тогда оно может служить прекрасной справочной таблицей; например, для поиска в сбалансированном дереве, содержащем миллион узлов, понадобится не более 20 сравнений (глубина дерева равна логарифму числа узлов по основанию 2). Чтобы поиск был осмысленным, предположим, что в каждом узле хранится не какое-то одно значение, а ключ и ассоциированные с ним данные.
Почти всегда лучше использовать в качестве справочной таблицы хэш или даже таблицу во внешней базе данных. Но все равно приведем код:
class Tree
# Предполагается, что определения взяты из предыдущего примера...
def search(x)
if self.data == x
return self
elsif x < self.data
return left ? left.search(x) : nil
else
return right ? right.search(x) : nil
end
end
end
keys = [50, 20, 80, 10, 30, 70, 90, 5, 14,
28, 41, 66, 75, 88, 96]
tree = Tree.new
keys.each {|x| tree.insert(x)}
s1 = tree.search(75) # Возвращает ссылку на узел, содержащий 75...
s2 = tree.search(100) # Возвращает nil (не найдено).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy()
14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy() Наконец, вы можете удалить элементы из дерева и, на системах GLIBC, удалить само дерево целиком:void *tdelete(const void *key, void **rootp,int (*compare)(const void*, const void*));/* Расширение GLIBC, в POSIX нет: */void tdestroy(void *root, void (*free_node)(void *nodep));Аргументы
Использование дерева каталогов исходных кодов ядра
Использование дерева каталогов исходных кодов ядра В идеале модуль является частью официального ядра и находится в каталоге исходных кодов ядра. Введение вашей разработки непосредственно в ядро может вначале потребовать больше работы, но обычно такое решение более
3.6.1. Источники справочной информации
3.6.1. Источники справочной информации Если вы окажетесь в ситуации, когда не знаете, что предпринять или сделать для достижения желаемой цели, лучше всего начать искать подсказку в самой системе. Дистрибутив Red Hat Linux содержит тысячи страниц документации, представленной в
Использование веб-таблицы данных Access
Использование веб-таблицы данных Access Если вы создали список, импортировав электронную таблицу Excel 2007, то, возможно, вы найдете удобным использовать для изменения, форматирования или ввода данных в этот список среду, похожую на электронную таблицу. Такая среда носит
Использование справочной документации
Использование справочной документации Справочная документации по средствам разработки Qt является важным инструментом в руках любого разработчика Qt—программ, поскольку в ней есть все необходимые сведения по любому классу и любой функции Qt. В данной книге используются
Вызов справочной системы
Вызов справочной системы В любой момент работы с AutoCAD вы можете получить доступ к электронной документации по программе. Для этого необходимо выбрать в падающем меню пункт Help. Альтернативный вариант – нажать клавишу F1 на функциональной клавиатуре, ввести символ ?
9.3.1. Реализация двоичного дерева
9.3.1. Реализация двоичного дерева Ruby позволяет реализовать двоичное дерево разными способами. Например, хранить значения узлов можно в массиве. Но мы применим более традиционный подход, характерный для кодирования на С, только указатели заменим ссылками на объекты.Что
9.3.2. Сортировка с помощью двоичного дерева
9.3.2. Сортировка с помощью двоичного дерева Двоичное дерево позволяет эффективно реализовать сортировку произвольных данных. (Правда, если данные уже отсортированы, оно вырождается в обычный связанный список.) Причина ясна: при каждом сравнении мы исключаем половину
2.6. Работа со справочной системой
2.6. Работа со справочной системой Пакет Nero 8 Premium содержит целый набор инструкций для работы с входящими в него приложениями. Эти инструкции составляют справочную систему Nero, и обратиться к ней можно двумя способами.Во-первых, вы можете запустить приложение и обратиться к
Вызов справочной системы
Вызов справочной системы В любой момент работы с AutoCAD вы можете получить доступ к электронной документации по программе. Для этого необходимо выбрать в падающем меню пункт Help. Альтернативный вариант – нажать клавишу F1 на функциональной клавиатуре, ввести символ?
4.14.3. Использование Model Explorer для реорганизации дерева декомпозиции
4.14.3. Использование Model Explorer для реорганизации дерева декомпозиции Существуют причины, по которым работа "Разработать конфигурацию" должна быть на верхнем уровне, на диаграмме АО. Действительно, дизайнер разрабатывает стандарты на продукцию, включая правила сборки и
Вызов справочной системы
Вызов справочной системы В любой момент работы с AutoCAD вы можете получить доступ к электронной документации по программе. Для этого необходимо выбрать в падающем меню пункт Help. Альтернативный вариант – нажать клавишу F1 на функциональной клавиатуре, ввести символ ?
Работа со справочной системой
Работа со справочной системой Справочная система программы Sound Forge (на английском языке) содержит все необходимые сведения для работы с ней. Для вызова справки нужно нажать клавишу F1 или выполнить в главном окне программы команду Help ? Contents and Index (Помощь ? Содержание и
Вызов справочной системы
Вызов справочной системы В любой момент работы с AutoCAD вы можете получить доступ к электронной документации по программе. Для этого необходимо выбрать в падающем меню пункт Help. Альтернативный вариант – нажать клавишу F1 на функциональном блоке клавиатуры, ввести символ?