写出上述完整的c语言代码,并添加注释
时间: 2023-08-11 14:23:05 浏览: 49
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建一个新节点
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 递归地构建二叉树
TreeNode* buildTree() {
int val;
scanf("%d", &val);
if (val == -1) {
return NULL;
}
TreeNode* node = createNode(val);
node->left = buildTree();
node->right = buildTree();
return node;
}
// 递归地中序遍历二叉树
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
// 定义队列结构体
typedef struct Queue {
TreeNode** data;
int front;
int rear;
int size;
} Queue;
// 创建队列
Queue* createQueue(int size) {
Queue* q = (Queue*)malloc(sizeof(Queue));
q->data = (TreeNode**)malloc(sizeof(TreeNode*) * size);
q->front = 0;
q->rear = -1;
q->size = 0;
return q;
}
// 销毁队列
void destroyQueue(Queue* q) {
free(q->data);
free(q);
}
// 判断队列是否为空
int isEmpty(Queue* q) {
return q->size == 0;
}
// 入队列
void enqueue(Queue* q, TreeNode* node) {
q->rear++;
q->data[q->rear] = node;
q->size++;
}
// 出队列
TreeNode* dequeue(Queue* q) {
TreeNode* node = q->data[q->front];
q->front++;
q->size--;
return node;
}
// 将二叉链表存储转换成顺序存储
void treeToArray(TreeNode* root, int* arr, int size) {
if (root == NULL) {
return;
}
Queue* q = createQueue(size);
int i = 0;
enqueue(q, root);
while (!isEmpty(q)) {
TreeNode* node = dequeue(q);
arr[i++] = node->val;
if (node->left) {
enqueue(q, node->left);
}
if (node->right) {
enqueue(q, node->right);
}
}
destroyQueue(q);
}
int main() {
// 构建二叉树
TreeNode* root = buildTree();
// 中序遍历二叉树
printf("Inorder Traversal: ");
inorderTraversal(root);
printf("\n");
// 将二叉链表存储转换成顺序存储
int size = 100;
int* arr = (int*)malloc(sizeof(int) * size);
treeToArray(root, arr, size);
printf("Array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)