用C语言对21,10,71,31,2,1,0,7,3数据顺序输入建立二叉排序树。 函数名称:CreateBSTree
时间: 2023-08-25 22:06:10 浏览: 79
好的,以下是实现CreateBSTree函数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉排序树结构体
typedef struct BSTreeNode {
int data;
struct BSTreeNode *left;
struct BSTreeNode *right;
} BSTreeNode;
// 创建二叉排序树
BSTreeNode* CreateBSTree(int data[], int len) {
BSTreeNode *root = NULL;
int i;
// 逐个插入节点
for (i = 0; i < len; i++) {
BSTreeNode *node = (BSTreeNode*)malloc(sizeof(BSTreeNode));
node->data = data[i];
node->left = NULL;
node->right = NULL;
// 如果是第一个节点,直接作为根节点
if (root == NULL) {
root = node;
} else {
// 否则找到插入位置,并插入节点
BSTreeNode *p = root;
while (p != NULL) {
if (node->data < p->data) {
if (p->left == NULL) {
p->left = node;
break;
}
p = p->left;
} else {
if (p->right == NULL) {
p->right = node;
break;
}
p = p->right;
}
}
}
}
return root;
}
// 遍历二叉排序树
void TraverseBSTree(BSTreeNode *root) {
if (root == NULL) {
return;
}
TraverseBSTree(root->left);
printf("%d ", root->data);
TraverseBSTree(root->right);
}
int main() {
int data[] = {21, 10, 71, 31, 2, 1, 0, 7, 3};
int len = sizeof(data) / sizeof(int);
BSTreeNode *root = CreateBSTree(data, len);
TraverseBSTree(root);
return 0;
}
```
在上面的代码中,CreateBSTree函数接受两个参数:一个整型数组和数组的长度。它会逐个插入数组中的元素,并构建一棵二叉排序树。最后,函数返回根节点指针。
TraverseBSTree函数用于遍历二叉排序树,以中序遍历为例。它会先递归遍历左子树,然后访问根节点,最后递归遍历右子树。这里只是用于测试,实际应用中遍历方式可能不同。
在main函数中,我们定义了一个整型数组data,并初始化了它。然后使用CreateBSTree函数构建了一棵二叉排序树,并使用TraverseBSTree函数遍历输出了树中所有节点的值。
希望能帮到你!
阅读全文