用c语音顺序输入生成二叉排序树,再遍历
时间: 2023-08-04 08:36:28 浏览: 96
好的,您的要求已经记录下来了。针对您的问题,我来为您详细讲解一下。
首先,我们需要了解一下什么是二叉排序树。它是一颗二叉树,其中任意节点的左子树中的每个节点的值都比该节点的值小,右子树中的每个节点的值都比该节点的值大。
接下来,我为您提供一份用C语言实现顺序输入生成二叉排序树的代码,代码中包含了二叉排序树的插入、中序遍历、前序遍历和后序遍历等操作。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉排序树的节点结构体
typedef struct BSTNode {
int data;
struct BSTNode *lchild, *rchild;
}BSTNode, *BSTree;
//定义二叉排序树的插入操作
void insertBST(BSTree *T, int data) {
if (*T == NULL) {
*T = (BSTree)malloc(sizeof(BSTNode));
(*T)->data = data;
(*T)->lchild = (*T)->rchild = NULL;
return;
}
if (data < (*T)->data) {
insertBST(&(*T)->lchild, data);
} else if (data > (*T)->data) {
insertBST(&(*T)->rchild, data);
}
}
//定义二叉排序树的中序遍历
void inOrder(BSTree T) {
if (T) {
inOrder(T->lchild);
printf("%d ", T->data);
inOrder(T->rchild);
}
}
//定义二叉排序树的前序遍历
void preOrder(BSTree T) {
if (T) {
printf("%d ", T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
//定义二叉排序树的后序遍历
void postOrder(BSTree T) {
if (T) {
postOrder(T->lchild);
postOrder(T->rchild);
printf("%d ", T->data);
}
}
int main() {
int n, data;
BSTree T = NULL;
printf("请输入节点个数:");
scanf("%d", &n);
printf("请输入节点数据:");
for (int i = 0; i < n; i++) {
scanf("%d", &data);
insertBST(&T, data);
}
printf("中序遍历结果:");
inOrder(T);
printf("\n前序遍历结果:");
preOrder(T);
printf("\n后序遍历结果:");
postOrder(T);
printf("\n");
return 0;
}
```
以上就是用C语言实现顺序输入生成二叉排序树的代码及其遍历操作。希望对您有所帮助!
阅读全文