用c语言写如何构建二叉排序树
时间: 2023-12-31 19:05:08 浏览: 73
以下是用C语言实现构建二叉排序树的示例代码:
```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);
} else 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("Inorder traversal of the BST: ");
inorderTraversal(root);
return 0;
}
```
在上述代码中,我们首先定义了一个 `Node` 结构体,包含了一个整数类型的数据成员 `data`,以及左右子节点的指针。然后,我们实现了一个 `newNode` 函数,用于创建一个新的节点,并返回该节点的指针。
接着,我们实现了一个 `insert` 函数,用于向二叉排序树中插入一个新的元素。在该函数中,我们首先判断当前节点是否为空,如果是,则创建一个新节点并返回;如果不是,则向左或右子树插入该元素。
最后,我们实现了一个 `inorderTraversal` 函数,用于中序遍历二叉排序树,并打印出遍历结果。在 `main` 函数中,我们首先创建了一个空的二叉排序树 `root`,然后向其中插入了一些元素,并调用 `inorderTraversal` 函数进行中序遍历。
阅读全文