用c语言写一个二叉搜索树
时间: 2024-05-12 22:21:04 浏览: 63
以下是用C语言编写的二叉搜索树代码:
```
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *left;
struct node *right;
}node;
node *createNode(int data)
{
node *newNode=(node*)malloc(sizeof(node));
newNode->data=data;
newNode->left=NULL;
newNode->right=NULL;
return newNode;
}
node *insertNode(node *root,int data)
{
if(root==NULL)
{
root=createNode(data);
return root;
}
if(data<root->data)
{
root->left=insertNode(root->left,data);
}
else if(data>root->data)
{
root->right=insertNode(root->right,data);
}
return root;
}
void inorderTraversal(node *root)
{
if(root==NULL)
{
return;
}
inorderTraversal(root->left);
printf("%d ",root->data);
inorderTraversal(root->right);
}
void preorderTraversal(node *root)
{
if(root==NULL)
{
return;
}
printf("%d ",root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
void postorderTraversal(node *root)
{
if(root==NULL)
{
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ",root->data);
}
int main()
{
node *root=NULL;
int n,data;
printf("Enter the number of elements: ");
scanf("%d",&n);
printf("Enter the elements: ");
for(int i=0;i<n;i++)
{
scanf("%d",&data);
root=insertNode(root,data);
}
printf("Inorder Traversal: ");
inorderTraversal(root);
printf("\nPreorder Traversal: ");
preorderTraversal(root);
printf("\nPostorder Traversal: ");
postorderTraversal(root);
return 0;
}
```
该程序实现了以下操作:
1. 创建一个新的节点
2. 插入一个节点到二叉搜索树中
3. 中序遍历二叉搜索树
4. 先序遍历二叉搜索树
5. 后序遍历二叉搜索树
在主函数中,程序首先要求用户输入要插入的元素数量,然后读取这些元素并将它们插入到二叉搜索树中。最后,程序按照中序、先序和后序的顺序遍历二叉搜索树,并将遍历的结果输出到屏幕上。
阅读全文