Menu
CoddyTech

节点类

Coddy AVL 树:数据结构系列 #10 课程的第 3 课,共 16 课。

树中的每个节点都存储四项内容:它的 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中的所有课

自己练习: C 在线编译器