Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Теоретична частина. Бінарне дерево – це впорядковане дерево, кожна вершина якого має не більше двох піддерев, причому для кожного вузла виконується правило: в лівому піддеревіБінарне дерево – це впорядковане дерево, кожна вершина якого має не більше двох піддерев, причому для кожного вузла виконується правило: в лівому піддереві містяться тільки ключі, що мають значення, менші, ніж значення даного вузла, а в правому піддереві містяться тільки ключі, що мають значення, більші, ніж значення даного вузла. При всьому цьому, якщо елемент, який ми хочемо помістити в дерево більше ніж кореневий, то за допомогою рекурсивного виклику функції відбувається послідовне переміщення елемента в праву частину. Для того щоб відобразити Бінарне дерево на екрані, спочатку слід перевірити чи взагалі воно існує. Якщо ми не заповнимо дерево і не закладемо насіннячко (не створимо корінь), то дерева в принципі існувати не може і тому відображати буде нічого, але якщо створити, то використовуючи рекурсивний виклик функції послідовно відображаємо всі елементи. Крім того, ця перша перевірка буде і сигналом для завершення рекурсивного виклику функції. Адже якщо зустрінеться Нульова ланка, то відбувається return, а ми після створення кожної ланки очищали пам'ять для наступного зростання. Двійкове дерево задається наступною структурою: typedef struct _t { int data; /* данные в узле */ struct _t *left, *right; /* указатели на левого и правого сыновей */ } t; t *root; /* корень дерева */ Таким чином, кожен елемент дерева містить деякі дані і два покажчика на нащадків (на лівого сина і на правого). Сам вузол будемо називати батьком цих двох нащадків. Визначення дерева вимагає, щоб у кожного вузла, крім кореня, був рівно один батько. Покажчик на корінь дерева зберігається у змінній root, вона дорівнює нулю, якщо дерево порожньо. Лівим і правим піддеревами вузла t (t! = 0) будемо називати дерева (можливо, порожні), корінням яких є відповідно t-> left і t-> right. Основні операції на деревах: пошук елемента, додавання елемента, видалення елемента. Для пошуку елемента в довільному бінарному дереві необхідно обійти всі елементи цього дерева. Існує два основних способи обходу дерева: в глибину і в ширину.
|