MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Динамические структуры данных: двоичные деревья

Название:Динамические структуры данных: двоичные деревья
Просмотров:101
Раздел:Информатика, программирование
Ссылка:Скачать(10 KB)
Описание:Дерево — это совокупность элементов, называемых узлами (при этом один из них определен как корень), и отношений (родительский–дочерний), образующих иерархическую структуру узлов.

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Динамические структуры данных: двоичные деревья
    Дерево - это совокупность элементов, называемых узлами (при этом один из них определен как корень), и отношений (родительский-дочерний), образующих иерархическую структуру узлов. Узлы могут являться величинами любого простого или структурированного типа, за исключением файлового. Узлы, которые не имеют ни одного последующего узла, называются листьями.
    В двоичном (бинарном) дереве каждый узел может быть связан не более чем двумя другими узлами. Рекурсивно двоичное дерево определяется так: двоичное дерево бывает либо пустым (не содержит ни одного узла), либо содержит узел, называемый корнем, а также два независимых поддерева - левое поддерево и правое поддерево.
    Двоичное дерево поиска может быть либо пустым, либо оно обладает таким свойством, что корневой элемент имеет большее значение узла, чем любой элемент в левом поддереве, и меньшее или равное, чем элементы в правом поддереве. Указанное свойство называется характеристическим свойством двоичного дерева поиска и выполняется для любого узла такого дерева, включая корень. Далее будем рассматривать только двоичные деревья поиска. Такое название двоичные деревья поиска получили по той причине, что скорость поиска в них примерно такая же, что и в отсортированных массивах: O(n) = C • log2n (в худшем случае O(n) = n).
    Пример. Для набора данных 9, 44, 0, -7, 10, 6, -12, 45 построить двоичное дерево поиска.
    Согласно определению двоичного дерева поиска число 9 помещаем в корень, все значения, меньшие его - на левое поддерево, большие или равные - на правое. В каждом поддереве очередной элемент можно рассматривать как корень и действовать по тому же алгоритму. В итоге получаем
    
    Выделим типовые операции над двоичными деревьями поиска:
    добавление элемента в дерево;
    удаление элемента из дерева;
    обход дерева (для печати элементов и т.д.);
    поиск в дереве.
    Поскольку определение двоичного дерева рекурсивно, то все указанные типовые операции могут быть реализованы в виде рекурсивных подпрограмм (на практике именно такой вариант чаще всего и применяется). Отметим лишь, что использование рекурсии замедляет работу программы и расходует лишнюю память при её выполнении.
    Пусть двоичное дерево поиска описывается следующим типом
    Type BT=LongInt; U = ^BinTree; BinTree = Record Inf : BT; L, R : U End;
    Покажем два варианта добавления элемента в дерево: итеративный и рекурсивный.
    {Итеративный вариант добавления элемента в дерево, Turbo Pascal}
    Procedure InsIteration(Var T : U; X : BT);
    Var vsp, A : U;
    Begin
    New(A); A^.Inf := X; A^.L:=Nil; A^.R := Nil;
    If T=Nil Then T:=A
    Else Begin vsp := T;
    While vsp Nil Do
    If A^.Inf < vsp^.Inf
    Then
    If vsp^.L=Nil Then Begin vsp^.L:=A; vsp:=A^.L End Else vsp:=vsp^.L
    Else
    If vsp^.R = Nil Then Begin vsp^.R := A; vsp:=A^.R End Else vsp := vsp^.R;
    End
    End;
    {Рекурсивный вариант добавления элемента в дерево, Turbo Pascal}
    Procedure InsRec(Var Tree : U; x : BT);
    Begin
    If Tree = Nil
    Then Begin
    New(Tree);
    Tree^.L := Nil;
    Tree^.R := Nil;
    Tree^.Inf := x
    End
    Else If x < Tree^.inf
    Then InsRec(Tree^.L, x)
    Else InsRec(Tree^.R, x)
    End;
    Аналогично на C++.
    typedef long BT;
    struct BinTree{
    BT inf;
    BinTree *L; BinTree *R;
    };
    /* Итеративный вариант добавления элемента в дерево, C++ */
    BinTree* InsIteration(BinTree *T, BT x)
    { BinTree *vsp, *A;
    A = (BinTree *) malloc(sizeof(BinTree));
    A->inf=x; A->L=0; A->R=0;
    if (!T) T=A;
    else {vsp = T;
    while (vsp)
    {if (A->inf < vsp->inf)
    if (!vsp->L) {vsp->L=A; vsp=A->L;}
    else vsp=vsp->L;
    else
    if (!vsp->R) {vsp->R=A; vsp=A->R;}
    else vsp=vsp->R;
    }
    }
    return T;
    }
    /* Рекурсивный вариант добавления элемента в дерево, C++ */
    BinTree* InsRec(BinTree *Tree, BT x)
    {
    if (!Tree) {Tree = (BinTree *) malloc(sizeof(BinTree));
    Tree->inf=x; Tree->L=0; Tree->R=0;
    }
    else if (x < Tree->inf) Tree->L=InsRec(Tree->L, x);
    else Tree->R=InsRec(Tree->R, x);
    return Tree;
    }
    Существует несколько способов обхода (прохождения) всех узлов дерева. ............




Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  



Похожие работы:

Название:Основные элементы методологии государственной кадровой политики
Просмотров:98
Описание:   Основные элементы методологии государственной кадровой политики Содержание 1. Методологические основы государственной кадровой политики 1.1 Понятие и методологичес

Название:Понятие и особенности аграрных правоотношений, их элементы
Просмотров:79
Описание: Понятие и особенности аграрных правоотношений, их элементы   Нормы аграрного права, как и любые другие правовые нормы, вводят для того, чтобы определенным образом урегулировать общественные отношения суб

Название:Язык Paskal. Основные элементы языка. Структура программы
Просмотров:76
Описание: Содержание   Введение 1. Структура программы 2. Алфавит языка 3. Простейшие конструкции 4. Выражения 5. Типы данных 6. Операции Заключение Литература     Введение Тема реферата "Я

Название:Элементы теории вероятностей. Случайные события
Просмотров:150
Описание: Элементы теории вероятностей. Случайные события   Цель изучения - развить навыки составления и анализа математических моделей несложных задач прикладного характера, связанных со случайными явлениями, нау

Название:Элементы тензороного исчисления
Просмотров:135
Описание: Содержание Введение §1. Линейные преобразования §2. Индексные обозначения §3. Общее определение тензоров §4. Скалярное произведение и метрический тензор §5. Действия с тензорами §6. Поднятие и опускани

 
     

Вечно с вами © MaterStudiorum.ru