二叉排序树c语言实现
时间: 2023-08-13 07:03:48 浏览: 109
下面是一个简单的二叉排序树的 C 语言实现:
```
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建一个新的节点
struct Node* newNode(int data) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点到二叉排序树
struct Node* insert(struct Node* node, int data) {
// 如果树为空,则创建一个新节点并返回
if (node == NULL) {
return newNode(data);
}
// 否则,递归地向下移动,直到找到一个合适的位置插入新节点
if (data < node->data) {
node->left = insert(node->left, data);
} else if (data > node->data) {
node->right = insert(node->right, data);
}
// 返回插入后的根节点
return node;
}
// 中序遍历二叉排序树
void inorderTraversal(struct Node* node) {
if (node != NULL) {
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
}
// 测试二叉排序树
int main() {
struct Node* root = NULL;
root = insert(root, 50);
insert(root, 30);
insert(root, 20);
insert(root, 40);
insert(root, 70);
insert(root, 60);
insert(root, 80);
// 输出排序后的节点
printf("排序后的节点:\n");
inorderTraversal(root);
printf("\n");
return 0;
}
```
这个程序创建了一个二叉排序树,并插入了一些节点,最后输出了排序后的节点。你可以根据需要进行修改和扩展。
阅读全文