русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оптимальные деревья


Дата добавления: 2015-01-16; просмотров: 577; Нарушение авторских прав


Оптимальным назовем дерево, высота которого минимальна. Это означает, что у него заполнены все уровни, кроме, быть может, последнего. Алгоритм построения оптимального дерева заключается в следующем:

- отсортируем ключи и средний из них поместим в корень

- левым сыном сделаем ключ, являющийся средним среди ключей слева от корня

- правым сыном сделаем ключ, являющийся средним среди ключей справа от корня

- точно также поступим при выборе сыновей каждого из узлов.

Ниже представлен текст функции, формирующей оптимальное дерево.

const int LEFT=0;

const int RIGHT=1;

struct NODE {

int Info;

struct NODE *Left;

struct NODE *Right;

};

NODE *CreateOptimalTree(int KeyArray[], int m, int n){

/*создать оптимальное дерево из ключей отрезка от m до n

сортированного массива ключей KeyArray */

int k;

NODE *Root;

if(n<m) return NULL;

Root=new NODE;

k=(n+m)/2;

Root->Info=KeyArray[k];

if(n==m){

Root->Left=NULL;

Root->Right=NULL;

} else {

Root->Left=CreateOptimalTree(KeyArray,m,k-1);

Root->Right=CreateOptimalTree(KeyArray,k+1,n);

}

return Root;

}

Построение оптимальных деревьев имеет смысл для статических деревьев, то есть для таких, для которых операции вставки и удаления отсутствуют. Восстановление оптимальности после вставки или удаления требует полного перестроения дерева.



<== предыдущая лекция | следующая лекция ==>
Оценка трудоемкости поиска в случайном дереве | Сбалансированные деревья


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.067 сек.