二叉树

title

二叉树(Binary Tree)是一种树形结构,其中每个节点最多有两个子节点,称为左子节点和右子节点。如果某个节点没有子节点,则称其为叶子节点。

二叉树有许多不同的变体,例如满二叉树完全二叉树平衡二叉树等等。其中最简单的是普通的二叉树,它可以表示为以下结构:

    A
   / \
  B   C
 / \   \
D   E   F

在这个例子中,节点A是根节点,它有左子节点B和右子节点C。节点B有左子节点D和右子节点E,而节点C只有右子节点F。

以下是一个简单的C语言实现二叉树的代码:


#include <stdio.h>
#include <stdlib.h>

typedef struct node {
    int value;
    struct node *left;
    struct node *right;
} node;

node *create_node(int value) {
    node *new_node = (node *)malloc(sizeof(node));
    new_node->value = value;
    new_node->left = NULL;
    new_node->right = NULL;
    return new_node;
}

void destroy_tree(node *root) {
    if (root == NULL) {
        return;
    }
    destroy_tree(root->left);
    destroy_tree(root->right);
    free(root);
}

int main() {
    node *root = create_node(1);
    root->left = create_node(2);
    root->right = create_node(3);
    root->left->left = create_node(4);
    root->left->right = create_node(5);
    root->right->left = create_node(6);
    root->right->right = create_node(7);
    destroy_tree(root);
    return 0;
}

这个代码创建了一个二叉树,并在销毁时递归地释放了所有节点的内存。在创建时,我们使用 create_node 函数来创建节点,该函数会分配一块新的内存并返回指向该内存的指针。我们使用 destroy_tree 函数来销毁整个二叉树,该函数首先递归地销毁左子树和右子树,然后释放节点的内存。

满二叉树 · 完全二叉树 · 平衡二叉树

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""