C语言创建一个二叉树并插入100个元素并便利
时间: 2024-05-07 07:23:07 浏览: 91
c语言构建二叉树
下面是一个示例代码,实现了创建二叉树并插入100个元素,然后进行前序、中序和后序遍历:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建一个新结点
struct TreeNode* newNode(int val) {
struct TreeNode* node = (struct TreeNode*) malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入一个新结点到二叉树中
struct TreeNode* insert(struct TreeNode* root, int val) {
if (root == NULL) {
return newNode(val);
}
if (val < root->val) {
root->left = insert(root->left, val);
} else {
root->right = insert(root->right, val);
}
return root;
}
// 前序遍历
void preorder(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val);
preorder(root->left);
preorder(root->right);
}
}
// 中序遍历
void inorder(struct TreeNode* root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->val);
inorder(root->right);
}
}
// 后序遍历
void postorder(struct TreeNode* root) {
if (root != NULL) {
postorder(root->left);
postorder(root->right);
printf("%d ", root->val);
}
}
int main() {
struct TreeNode* root = NULL;
int i;
for (i = 0; i < 100; i++) {
root = insert(root, rand() % 1000); // 插入一个随机值
}
printf("前序遍历:");
preorder(root);
printf("\n中序遍历:");
inorder(root);
printf("\n后序遍历:");
postorder(root);
printf("\n");
return 0;
}
```
这里使用了随机值插入二叉树,因此每次运行结果可能会不同。
阅读全文