C语言实现层序生成二叉树算法代码
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数组中的元素来生成不同的二叉树。同样,这只是一个基本的示例,实际的二叉树操作可能需要更多的代码来实现各种功能。
原文地址: https://www.cveoy.top/t/topic/ROd 著作权归作者所有。请勿转载和采集!