利用c语言建立二叉排序树
时间: 2023-08-25 11:19:23 浏览: 86
好的,我来为您介绍如何使用 C 语言建立二叉排序树。
二叉排序树也称为二叉查找树,是一种特殊的二叉树结构。它的每个节点都包含一个键值,而且对于任何节点,它的左子树中所有节点的键值都小于该节点的键值,而它的右子树中所有节点的键值都大于该节点的键值。
以下是使用 C 语言建立二叉排序树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉排序树的节点结构体
struct node {
int key;
struct node *left, *right;
};
// 插入节点函数
struct node* insert(struct node* node, int key) {
// 如果树为空,则新建一个节点
if (node == NULL) {
node = (struct node*) malloc(sizeof(struct node));
node->key = key;
node->left = node->right = NULL;
}
// 如果插入的值小于当前节点的值,则插入到左子树中
else if (key < node->key) {
node->left = insert(node->left, key);
}
// 如果插入的值大于等于当前节点的值,则插入到右子树中
else {
node->right = insert(node->right, key);
}
return node;
}
// 中序遍历函数,按升序输出二叉排序树中的所有节点
void inorder(struct node* node) {
if (node != NULL) {
inorder(node->left);
printf("%d ", node->key);
inorder(node->right);
}
}
int main() {
struct node *root = NULL;
int keys[] = {5, 3, 7, 1, 4, 6, 8, 2};
int n = sizeof(keys) / sizeof(keys[0]);
// 将所有键值插入到二叉排序树中
for (int i = 0; i < n; i++) {
root = insert(root, keys[i]);
}
// 按升序输出二叉排序树中的所有节点
inorder(root);
return 0;
}
```
在上面的代码中,我们先定义了一个 `node` 结构体,它包含了一个键值 `key` 和两个指针 `left` 和 `right`,分别指向左子树和右子树。然后,我们定义了一个 `insert` 函数,用于向二叉排序树中插入新节点。在插入节点时,我们按照二叉排序树的定义,将键值小于当前节点的值的节点插入到左子树中,将键值大于等于当前节点的值的节点插入到右子树中。最后,我们定义了一个 `inorder` 函数,用于按升序输出二叉排序树中的所有节点。
在 `main` 函数中,我们首先定义了一个空的二叉排序树 `root`,然后将所有键值插入到二叉排序树中。最后,我们调用 `inorder` 函数,按升序输出二叉排序树中的所有节点。
希望这个例子对您有帮助!
阅读全文