Ч
ЕЛЯБИНСК,
ЮУ
Р
ГУ
,
ИЕТН
Назад
Начало
Учебные материалы
Подразделы
Другие разделы
Дата и время
06/01/2026 07:53:09
Авторизация
Имя:
Пароль:
Вход
Зарегистрироваться
Восстановить пароль
Структуры данных на основе деревьев
Определения
Обходы бинарного дерева
Двоичное дерево поиска
Система непересекающихся множеств
Сбалансированные деревья
Декартово дерево
Декартово дерево по неявному ключу
Дерево отрезков
Обходы бинарного дерева

Прямой (pre-order) обход бинарного дерева:
* Обработать узел
* Обойти левое поддерево
* Обойти правое поддерево
```c++
void preorder(Node* n)
{ if(!n) return;
print(n->value);
preorder(n->left);
preorder(n->right);
}
```
``(+ (* 3 (- 7 4)) 6)`` // используется в функциональных языках (Scheme)
--
Симметричный (in-order) обход бинарного дерева:
* Обойти левое поддерево
* Обработать узел
* Обойти правое поддерево
```c++
void inorder(Node* n)
{ if(!n) return;
inorder(n->left);
print(n->value);
inorder(n->right);
}
```
``((3 * (7 - 4)) + 6)``
--
Обратный (post-order) обход бинарного дерева:
* Обойти левое поддерево
* Обойти правое поддерево
* Обработать узел
```c++
void postorder(Node* n)
{ if(!n) return;
postorder(n->left);
postorder(n->right);
print(n->value);
}
```
``((3 (7 4 -) *) 6 +)``\
``3 7 4 - * 6 +`` // обратная польская (бесскобочная) запись, используется в языке Forth и некоторых калькуляторах