用c语言实现二叉排序树的构造
时间: 2023-08-21 13:13:30 浏览: 115
二叉排序树(Binary Search Tree)是一种特殊的二叉树,它满足以下两个条件:
1. 左子树中所有节点的值都小于根节点的值;
2. 右子树中所有节点的值都大于根节点的值。
下面是用C语言实现二叉排序树的构造的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉排序树
typedef struct BSTNode {
int data; // 节点的值
struct BSTNode *left; // 左子树
struct BSTNode *right; // 右子树
} BSTNode;
// 创建一个新节点
BSTNode *create_node(int value) {
BSTNode *node = (BSTNode *)malloc(sizeof(BSTNode));
node->data = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 向二叉排序树中插入一个节点
void insert_node(BSTNode **root, int value) {
if (*root == NULL) {
*root = create_node(value);
return;
}
if (value < (*root)->data) {
insert_node(&((*root)->left), value);
} else {
insert_node(&((*root)->right), value);
}
}
// 中序遍历二叉排序树
void inorder_traversal(BSTNode *root) {
if (root != NULL) {
inorder_traversal(root->left);
printf("%d ", root->data);
inorder_traversal(root->right);
}
}
// 主函数
int main() {
BSTNode *root = NULL;
insert_node(&root, 10);
insert_node(&root, 5);
insert_node(&root, 15);
insert_node(&root, 3);
insert_node(&root, 7);
insert_node(&root, 12);
insert_node(&root, 20);
printf("中序遍历结果:");
inorder_traversal(root);
return 0;
}
```
在上面的代码中,我们首先定义了一个二叉排序树的结构体,包含节点的值、左子树和右子树三个成员。然后我们定义了一个函数`create_node`,用于创建一个新节点。接着我们定义了函数`insert_node`,用于向二叉排序树中插入一个节点。最后我们定义了函数`inorder_traversal`,用于中序遍历二叉排序树。在主函数中,我们创建了一个二叉排序树,并且插入了一些节点,最后输出了中序遍历的结果。
阅读全文