c语言对设计的基础数据顺序输入建立二叉排序树。 函数名称:CreateBSTree
时间: 2024-02-25 09:52:02 浏览: 68
好的,我可以帮你回答这个问题。下面是一个基于C语言的二叉排序树的创建函数CreateBSTree的实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BSTreeNode {
int data;
struct BSTreeNode* left;
struct BSTreeNode* right;
} BSTreeNode;
// 在二叉排序树中插入一个节点
void insert(BSTreeNode** root, int data) {
if (*root == NULL) {
*root = (BSTreeNode*)malloc(sizeof(BSTreeNode));
(*root)->data = data;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (data < (*root)->data) {
insert(&((*root)->left), data);
} else if (data > (*root)->data) {
insert(&((*root)->right), data);
}
}
// 建立二叉排序树
BSTreeNode* CreateBSTree(int* arr, int n) {
BSTreeNode* root = NULL;
int i;
for (i = 0; i < n; i++) {
insert(&root, arr[i]);
}
return root;
}
// 打印二叉排序树
void printBSTree(BSTreeNode* root) {
if (root != NULL) {
printf("%d ", root->data);
printBSTree(root->left);
printBSTree(root->right);
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
BSTreeNode* root = CreateBSTree(arr, n);
printBSTree(root);
return 0;
}
```
在这个实现中,我们定义了一个`BSTreeNode`结构体,它包含了一个`int`类型的数据和两个指向左右子节点的指针。我们还定义了一个`insert`函数,它用于向二叉排序树中插入一个节点。在`CreateBSTree`函数中,我们遍历输入的数组,然后对于每个元素调用`insert`函数来插入到二叉排序树中。最后,我们返回指向根节点的指针。
在这个例子中,我们输入了一个整数数组,但你可以根据需要更改输入方式。同时,该代码还包括一个`printBSTree`函数用于输出二叉排序树中的节点。
阅读全文