用二叉链表作为存储结构,输入键值序列建立一棵二叉排序树,然后中序遍历这棵二叉树。C语言编写
时间: 2024-04-30 20:19:13 浏览: 123
以下是用C语言实现输入键值序列建立一棵二叉排序树,然后中序遍历的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉排序树结点
typedef struct TreeNode {
int value;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 插入结点
TreeNode* insertNode(TreeNode *root, int value) {
if (root == NULL) {
// 如果根节点为空,创建一个新节点
TreeNode *newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->value = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
else if (value < root->value) {
// 如果插入的值小于根节点的值,插入到左子树中
root->left = insertNode(root->left, value);
}
else {
// 如果插入的值大于等于根节点的值,插入到右子树中
root->right = insertNode(root->right, value);
}
return root;
}
// 中序遍历
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->value);
inorderTraversal(root->right);
}
int main() {
int n, value;
TreeNode *root = NULL;
// 输入键值序列长度
printf("Enter the number of nodes: ");
scanf("%d", &n);
// 输入键值序列
printf("Enter the values: ");
for (int i = 0; i < n; i++) {
scanf("%d", &value);
root = insertNode(root, value);
}
// 中序遍历
printf("Inorder Traversal: ");
inorderTraversal(root);
printf("\n");
return 0;
}
```
在运行这个程序时,会要求输入键值序列长度和键值序列本身,然后会输出中序遍历的结果。
阅读全文