C语言实现层序生成二叉树算法代码

以下代码使用 C 语言实现了层序生成二叉树的算法,并提供了测试代码。

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

// 二叉树节点定义
struct Node {
    int data;
    struct Node* left;
    struct Node* right;
};

// 创建新的节点
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    if (newNode == NULL) {
        printf('内存分配失败!\n');
        exit(1);
    }
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

// 层序生成二叉树
struct Node* levelOrderGenerate(int arr[], int size) {
    if (size == 0)
        return NULL;

    struct Node* root = createNode(arr[0]);

    struct Node** queue = (struct Node**)malloc(size * sizeof(struct Node*));
    int rear = 0, front = 0;
    queue[rear++] = root;

    int i = 1;
    while (i < size) {
        struct Node* currentNode = queue[front++];

        // 插入左子节点
        if (i < size) {
            struct Node* leftNode = createNode(arr[i++]);
            currentNode->left = leftNode;
            queue[rear++] = leftNode;
        }

        // 插入右子节点
        if (i < size) {
            struct Node* rightNode = createNode(arr[i++]);
            currentNode->right = rightNode;
            queue[rear++] = rightNode;
        }
    }
    free(queue);

    return root;
}

// 测试代码
int main() {
    int arr[] = { 1, 2, 3, 4, 5, 6, 7 };
    int size = sizeof(arr) / sizeof(arr[0]);

    struct Node* root = levelOrderGenerate(arr, size);

    // 输出二叉树的节点数据
    printf('二叉树的节点数据: ');
    printf('%d ', root->data);
    printf('%d ', root->left->data);
    printf('%d ', root->right->data);
    printf('%d ', root->left->left->data);
    printf('%d ', root->left->right->data);
    printf('%d ', root->right->left->data);
    printf('%d\n', root->right->right->data);

    return 0;
}

这段代码会根据给定的数组按照层序生成二叉树,并输出二叉树的节点数据。你可以根据需要修改arr数组中的元素来生成不同的二叉树。同样,这只是一个基本的示例,实际的二叉树操作可能需要更多的代码来实现各种功能。

C语言实现层序生成二叉树算法代码

原文地址: https://www.cveoy.top/t/topic/ROd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录