Menu
Coddy logo textTech

Получение высоты

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

Добавьте метод getHeight в AVLTree, который считывает сохраненную высоту узла. Единственная хитрость заключается в случае с null: пустое поддерево не существует, поэтому по соглашению его высота равна 0, что на единицу меньше высоты настоящего листа, равной 1.

Выполнение каждого поиска высоты через этот единственный метод (вместо прямого чтения node.height повсюду) означает, что проверку на null нужно написать всего один раз.

challenge icon

Задание

Новичок

Напишите метод getHeight(node) в классе AVLTree, который возвращает 0, если node равен null, в противном случае возвращает node.height.

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

#include <stdio.h>
#include <string.h>
#include "avltree.h"

int main(void) {
    AVLTree* tree = AVLTree_create();
    char line[256];
    while (fgets(line, sizeof(line), stdin) != NULL) {
        line[strcspn(line, "\r\n")] = '\0';
        if (strcmp(line, "null") == 0) {
            printf("%d\n", AVLTree_getHeight(tree, NULL));
        }
        if (strcmp(line, "null") != 0) {
            int h;
            sscanf(line, "%d", &h);
            Node* n = Node_create(0);
            n->height = h;
            printf("%d\n", AVLTree_getHeight(tree, n));
        }
    }
    return 0;
}

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