用c++语言创建一个二叉查找树
时间: 2024-05-09 14:22:11 浏览: 80
好的,我可以帮你回答这个问题。
二叉查找树是一种常见的数据结构,它具有以下特点:每个节点最多只有两个子节点,且左子节点的值小于等于父节点,右子节点的值大于等于父节点。
在C语言中,我们可以使用结构体来表示二叉查找树的节点,如下所示:
```
struct node {
int data;
struct node* left;
struct node* right;
};
```
其中,`data`是节点存储的数据,`left`和`right`分别指向左右子节点。
然后,我们可以使用递归的方式来创建二叉查找树。具体实现代码如下:
```
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* left;
struct node* right;
};
struct node* create_node(int data) {
struct node* p = (struct node*)malloc(sizeof(struct node));
p->data = data;
p->left = NULL;
p->right = NULL;
return p;
}
struct node* insert_node(struct node* root, int data) {
if (root == NULL) {
return create_node(data);
}
if (data <= root->data) {
root->left = insert_node(root->left, data);
} else {
root->right = insert_node(root->right, data);
}
return root;
}
void inorder_traversal(struct node* root) {
if (root == NULL) {
return;
}
inorder_traversal(root->left);
printf("%d ", root->data);
inorder_traversal(root->right);
}
int main() {
int n, data;
struct node* root = NULL;
printf("请输入二叉查找树的节点个数:");
scanf("%d", &n);
printf("请输入%d个节点的值:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &data);
root = insert_node(root, data);
}
printf("中序遍历结果为:");
inorder_traversal(root);
printf("\n");
return 0;
}
```
在上面的代码中,`create_node`函数用于创建节点,`insert_node`函数用于插入节点,`inorder_traversal`函数用于中序遍历二叉查找树。在主函数中,首先输入二叉查找树的节点个数和每个节点的值,然后使用`insert_node`函数逐个插入节点,最后使用`inorder_traversal`函数输出中序遍历结果。
阅读全文