Menu
Coddy logo textTech

Класс Node

Урок 3 из 16 курса AVL-дерево — Серия «Структуры данных» №10 на Coddy.

Каждый узел в дереве хранит четыре вещи: своё value, указатели на дочерние узлы left и right, и свою собственную height. Новый узел является листом, поэтому его высота начинается с 1, и у него пока нет дочерних узлов.

Отслеживание высоты непосредственно в узле (вместо того чтобы пересчитывать её, каждый раз обходя дерево) — это то, что позволяет каждой последующей операции проверять баланс за константное время.

challenge icon

Задание

Новичок

Напишите класс Node с конструктором, который принимает value и сохраняет его, устанавливает left и right в null, и устанавливает height в 1.

Попробуйте сами

#include <stdio.h>
#include "node.h"

int main(void) {
    char line[256];
    while (fgets(line, sizeof(line), stdin) != NULL) {
        int v;
        if (sscanf(line, "%d", &v) != 1) {
            continue;
        }
        Node* n = Node_create(v);
        if (n->left == NULL && n->right == NULL) {
            printf("%d %d null null\n", n->value, n->height);
        } else if (n->left == NULL) {
            printf("%d %d null %d\n", n->value, n->height, n->right->value);
        } else if (n->right == NULL) {
            printf("%d %d %d null\n", n->value, n->height, n->left->value);
        } else {
            printf("%d %d %d %d\n", n->value, n->height, n->left->value, n->right->value);
        }
    }
    return 0;
}

Все уроки раздела AVL-дерево — Серия «Структуры данных» №10