用c语言构造一个二叉排序树
时间: 2023-09-23 12:03:58 浏览: 94
好的,以下是用 C 语言实现二叉排序树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
void insert(TreeNode** root, int val) {
if (*root == NULL) {
*root = (TreeNode *)malloc(sizeof(TreeNode));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
return;
}
if (val < (*root)->val) {
insert(&((*root)->left), val);
} else {
insert(&((*root)->right), val);
}
}
void inorder(TreeNode* root) {
if (root == NULL) {
return;
}
inorder(root->left);
printf("%d ", root->val);
inorder(root->right);
}
int main() {
TreeNode* root = NULL;
insert(&root, 5);
insert(&root, 3);
insert(&root, 7);
insert(&root, 1);
insert(&root, 9);
inorder(root);
return 0;
}
```
在这个代码中,我们定义了一个 `TreeNode` 结构体来表示一个树节点,其中包括值 `val` 和左右子节点 `left` 和 `right`。我们使用 `insert` 函数将一个值插入到树中,如果当前树为空,则直接创建一个节点;否则,如果值比当前根节点的值小,则在左子树中插入;否则,在右子树中插入。我们还定义了一个 `inorder` 函数来遍历二叉排序树,按中序遍历的方式输出所有节点的值。
在 `main` 函数中,我们创建了一个根节点,并依次向树中插入了 5、3、7、1 和 9 这五个数,然后通过 `inorder` 函数输出二叉排序树中所有节点的值。
阅读全文