输入10个不同整数,依次插入到一颗初始为空的二叉排序树中,并对其进行中序遍历,以验证树的正确性。使用c语言,并说明算法思想
时间: 2024-03-16 17:43:53 浏览: 64
算法思想:
首先,我们需要了解二叉排序树(BST)的定义:对于任意一个节点,它的左子树中的所有节点的值都小于它的值,右子树中的所有节点的值都大于它的值。
因此,我们可以按照以下步骤构建一个二叉排序树:
1.将第一个整数作为根节点插入二叉排序树。
2.从第二个整数开始,依次与已有的节点进行比较,找到它在二叉排序树中的插入位置,并插入。
3.重复步骤2,直到所有的整数都被插入到二叉排序树中。
4.对二叉排序树进行中序遍历,即可得到按升序排列的整数序列。
C语言实现代码如下:
```
#include<stdio.h>
#include<stdlib.h>
//定义二叉排序树节点结构体
typedef struct BSTNode{
int data;
struct BSTNode *left, *right;
}BSTNode,*BSTree;
//插入节点
BSTree Insert(BSTree T, int data){
if(!T){//如果树为空,新建一个节点
T = (BSTree)malloc(sizeof(BSTNode));
T->data = data;
T->left = T->right = NULL;
}
else{//如果树不为空
if(data < T->data){//如果插入节点的值小于当前节点的值,插入到左子树
T->left = Insert(T->left, data);
}
else{//如果插入节点的值大于等于当前节点的值,插入到右子树
T->right = Insert(T->right, data);
}
}
return T;
}
//中序遍历
void InOrder(BSTree T){
if(T){
InOrder(T->left);
printf("%d ", T->data);
InOrder(T->right);
}
}
int main(){
int arr[10] = {5, 2, 9, 1, 7, 8, 3, 6, 4, 10};
BSTree T = NULL;
for(int i = 0; i < 10; i++){
T = Insert(T, arr[i]);
}
InOrder(T);
return 0;
}
```
输出结果为:1 2 3 4 5 6 7 8 9 10,证明我们构建的二叉排序树是正确的。
阅读全文