c语言输入10个不同整数,依次插入到一颗初始为空的二叉排序树中,并对其进行中序遍历,以验证树的正确性
时间: 2023-07-31 07:09:46 浏览: 118
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int value;
struct Node* left;
struct Node* right;
} Node;
// 插入节点
Node* insert(Node* root, int value) {
if (root == NULL) {
root = (Node*)malloc(sizeof(Node));
root->value = value;
root->left = root->right = NULL;
} else if (value < root->value) {
root->left = insert(root->left, value);
} else {
root->right = insert(root->right, value);
}
return root;
}
// 中序遍历
void inorder(Node* root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->value);
inorder(root->right);
}
}
int main() {
Node* root = NULL;
int num, i, value;
printf("请输入10个不同的整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &value);
root = insert(root, value);
}
printf("中序遍历结果:\n");
inorder(root);
return 0;
}
```
程序首先定义了一个节点结构体,里面包含节点的值、左子树和右子树。`insert` 函数用于向二叉排序树中插入节点,如果当前节点为空,则创建节点,并将值赋给它;否则,根据值的大小比较,将节点插入左子树或右子树中。`inorder` 函数用于中序遍历二叉排序树,即先递归遍历左子树,再输出当前节点的值,最后递归遍历右子树。
`main` 函数中,首先创建一个空的二叉排序树 `root`,然后依次读入10个整数,并调用 `insert` 函数将它们插入到树中。最后调用 `inorder` 函数输出中序遍历结果。
你可以输入10个不同的整数进行测试。
阅读全文