生成一段递归生成二叉树的C语言代码
时间: 2023-11-24 17:08:21 浏览: 86
以下是一段递归生成二叉树的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* left;
struct Node* right;
};
struct Node* newNode(int data) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
struct Node* insert(struct Node* node, int data) {
if (node == NULL) {
return newNode(data);
}
if (data <= node->data) {
node->left = insert(node->left, data);
} else {
node->right = insert(node->right, data);
}
return node;
}
void inorderTraversal(struct Node* node) {
if (node == NULL) {
return;
}
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
int main() {
struct Node* root = NULL;
int arr[] = { 5, 3, 7, 1, 9, 4, 2, 6, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
root = insert(root, arr[i]);
}
inorderTraversal(root);
return 0;
}
```
在上面的代码中,我们定义了一个二叉树的节点结构体 `Node`,其中包含了节点的数据、左子树和右子树。我们使用 `newNode()` 函数创建一个新的节点,使用 `insert()` 函数插入一个新的数据到二叉树中,使用 `inorderTraversal()` 函数对二叉树进行中序遍历输出。
在 `main()` 函数中,我们定义了一个数组 `arr`,然后使用 `for` 循环将数组中的元素逐个插入到二叉树中。最后输出二叉树的中序遍历结果。
阅读全文