0Pricing
C Academy · Урок

Деревья и графы

Изучите структуры деревьев и графов для представления иерархических и сетевых данных

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

Деревья и графы в C

Деревья и графы в C

Деревья и графы — это нелинейные структуры данных, используемые для представления иерархических данных и данных, связанных в сети.

В этом уроке Вы узнаете:

  • Как устроены деревья и графы.
  • Как реализовать двоичное дерево в C.
  • Как представлять графы с помощью списков смежности и матриц смежности.
Деревья и графы — иллюстрация 1

Что такое дерево?

Что такое дерево?

Дерево — это иерархическая структура данных, состоящая из узлов.

Основные термины:

  • Корень — верхний узел.
  • Родитель и потомок — узлы, соединённые напрямую.
  • Лист — узел без потомков.

Пример: 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» завершён!

Деревья и графы — иллюстрация 10

Часто задаваемые вопросы

Урок «Деревья и графы» бесплатный?

Да — полный текст урока «Деревья и графы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Связные списки
  2. Стеки и очереди
  3. Деревья и графы
← Назад к C Academy