freeCodeCamp/guide/russian/computer-science/data-structures/trees/index.md

72 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Trees
localeTitle: деревья
---
# деревья
Структура данных дерева может быть определена рекурсивно (локально) в виде набора узлов (начиная с корневого узла), где каждый узел представляет собой структуру данных, состоящую из значения, вместе со списком ссылок на узлы («дети») , с ограничениями, которые не дублируются ссылкой, и ни один не указывает на корень. Дерево без узлов называется нулевым или пустым деревом.
Бинарное дерево представляет собой нелинейную структуру данных, состоящую из узлов, где каждый узел имеет следующие 3 компонента:
**Элемент данных** : хранит любые данные в узле **Левый указатель** : указывает на поддеревье в левой части узла **Правильный указатель** : указывает на поддерево справа от узла Как следует из названия, элемент данных хранит любые данные в узле. Левый и правый указатели указывают на двоичные деревья с левой и правой стороны узла соответственно.
Если дерево пустое, оно представлено нулевым указателем.
## Терминология, используемая в деревьях:
**Корень** : Верхний узел в дереве.
**Ребенок** : Узел, напрямую подключенный к другому узлу при удалении от корня.
**Родитель** : Обратное понятие ребенка.
**Братья и сестры** : Группа узлов с одним и тем же родителем.
**Потомок** : Узлы достижимы путем повторного прохождения от родителя к дочернему.
**Предки** : Узел, доступный путем повторного прохождения от дочернего к родительскому.
**Ветвь** (внутренний узел): Узел дерева с дочерними узлами.
**Лист** (обычно называемый внешним узлом): Узел без детей.
**Степень** : Количество поддеревьев узла.
**Край** : Связь между одним узлом и другим.
**Путь** : Последовательность узлов и ребер, соединяющих узел с потомком.
**Уровень** : Уровень узла определяется 1 + (количество соединений между узлом и корнем).
**Высота дерева** : Высота дерева - это высота его корневого узла.
**Глубина** : Глубина узла - это количество ребер от корневого узла дерева до узла.
**Лес** : Лес представляет собой набор из n ≥ 0 непересекающихся деревьев.
### Некоторые популярные типы деревьев:
* Двоичное дерево
* Двоичное дерево поиска
* Дерево AVL
* Красный Черный Дерево
* Splay Tree
* Дерево Хаффмана
### Общее использование
* Представление иерархических данных
* Хранение данных таким образом, чтобы он был легко доступен для поиска
* Представление отсортированных списков данных
* Алгоритмы маршрутизации
### Код узла дерева
\`\` \`c\_cpp узел структуры { int данные; // Элемент данных struct node \* left; // Указатель на левый узел struct node \* right; // Указатель на правый узел };
\`\` \`
#### Дополнительная информация:
* [Уроки урока CMU](http://www.cs.cmu.edu/~clo/www/CMU/DataStructures/Lessons/lesson4_1.htm)
* [Википедия](https://en.wikipedia.org/wiki/Tree_(data_structure))