Деревья и графы
Изучите структуры деревьев и графов для представления иерархических и сетевых данных
«Деревья и графы» — бесплатный урок C Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.
Деревья и графы в C
Деревья и графы в C
Деревья и графы — это нелинейные структуры данных, используемые для представления иерархических данных и данных, связанных в сети.
В этом уроке Вы узнаете:
- Как устроены деревья и графы.
- Как реализовать двоичное дерево в C.
- Как представлять графы с помощью списков смежности и матриц смежности.

Что такое дерево?
Что такое дерево?
Дерево — это иерархическая структура данных, состоящая из узлов.
Основные термины:
- Корень — верхний узел.
- Родитель и потомок — узлы, соединённые напрямую.
- Лист — узел без потомков.
Пример: Node двоичного дерева
Пример: Node двоичного дерева
В C узел двоичного дерева определяется с помощью struct с указателями на левого и правого потомка.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *left, *right;
};
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
int main() {
struct Node *root = createNode(10);
return 0;
}Обход двоичного дерева
Обход двоичного дерева
Методы обхода:
- Inorder (LNR) — левый, Node, правый.
- Прямой обход (NLR) — Node, левый, правый.
- Обратный обход (LRN) — левый, правый, Node.
Пример: обход Inorder
Пример: обход Inorder
Эта программа выполняет обход Inorder двоичного дерева.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *left, *right;
};
void inorder(struct Node *root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
}
int main() {
struct Node *root = malloc(sizeof(struct Node));
root->data = 10;
root->left = NULL;
root->right = NULL;
inorder(root);
return 0;
}Что такое граф?
Что такое граф?
Граф — это совокупность узлов (вершин), соединённых рёбрами.
Графы могут быть:
- Ориентированными — рёбра имеют направление.
- Неориентированными — рёбра не имеют направления.
Представление графов
Представление графов
Графы можно представлять с помощью:
- Матрицы смежности — двумерного массива, представляющего соединения.
- Списка смежности — списка, в котором каждый узел указывает на своих соседей.
Обход графа
Обход графа
Распространённые методы обхода:
- Поиск в ширину (BFS) — посещает всех соседей, прежде чем перейти глубже.
- Поиск в глубину (DFS) — исследует граф настолько глубоко, насколько возможно, прежде чем вернуться назад.
Итоги
Итоги
В этом уроке Вы узнали:
- Как устроены деревья и графы.
- Как выполнять обходы деревьев.
- Как представлять графы и выполнять их обход.
На этом раздел «Структуры данных в C» завершён!

Часто задаваемые вопросы
Урок «Деревья и графы» бесплатный?
Да — полный текст урока «Деревья и графы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.
Чему я научусь в уроке «Деревья и графы»?
Изучите структуры деревьев и графов для представления иерархических и сетевых данных Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Деревья и графы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Связные списки
- Стеки и очереди
- Деревья и графы