温馨提示×

C语言递归生成二叉树怎么实现

小亿
90
2024-02-19 15:38:33
栏目: 编程语言

在C语言中,可以通过结构体和递归函数来实现二叉树的生成。下面是一个简单的示例代码:

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

// 定义二叉树的节点结构体
typedef struct Node {
    int data;
    struct Node* left;
    struct Node* right;
} Node;

// 创建新节点
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

// 递归生成二叉树
Node* createBinaryTree() {
    int data;
    Node* root = NULL;

    printf("输入节点的值(-1表示空节点):");
    scanf("%d", &data);

    if (data == -1) {
        return NULL;
    }

    root = createNode(data);

    printf("输入%d的左子节点:\n", data);
    root->left = createBinaryTree();

    printf("输入%d的右子节点:\n", data);
    root->right = createBinaryTree();

    return root;
}

// 测试函数
void preorderTraversal(Node* root) {
    if (root != NULL) {
        printf("%d ", root->data);
        preorderTraversal(root->left);
        preorderTraversal(root->right);
    }
}

int main() {
    Node* root = createBinaryTree();

    printf("前序遍历结果:\n");
    preorderTraversal(root);

    return 0;
}

在上面的代码中,我们首先定义了节点结构体 Node,然后定义了一个用于创建新节点的函数 createNode。接着使用递归函数 createBinaryTree 来生成二叉树,用户可以输入节点的值,-1表示空节点。最后通过前序遍历函数 preorderTraversal 来输出生成的二叉树。

你可以运行这段代码,按照提示输入节点的值来生成一个二叉树,并输出前序遍历的结果。

0