else//继续查找右子树
returndelete_BSTree(pTree->rchild,key);
}
}
/*
根据所给的长为len的arr数组,按数组中元素的顺序构建一棵二叉排序树
*/
BSTreecreate_BSTree(int*arr,intlen)
{
BSTreepTree=NULL;
inti;
//按顺序逐个节点插入到二叉排序树中
for(i=0;i<len;i++)
insert(pTree,arr[i]);
returnpTree;
}
/*
递归中序遍历二叉排序树,得到元素从小到大有序排列的序列
*/
voidin_traverse(BSTreepTree)
{
if(pTree)
{
if(pTree->lchild)
in_traverse(pTree->lchild);
printf("%d",pTree->data);
if(pTree->rchild)
in_traverse(pTree->rchild);
}
}
intmain()
{
inti;
intnum;
printf("请输入节点个数:");
scanf("%d",&num);
//输入num个整数
int*arr=(int*)malloc(num*sizeof(int));
printf("请依次输入这%d个整数(必须互不相等):",num);
for(i=0;i<num;i++)
scanf("%d",arr+i);
//中序遍历该二叉排序树,使数据按照从小到大的顺序输出
BSTreepTree=create_BSTree(arr,num);
printf("中序遍历该二叉排序树的结果:");
in_traverse(pTree);
printf("\n");
//查找给定的整数
intkey;
printf("请输入要查找的整数:");
scanf("%d",&key);
if(search(pTree,key))
printf("查找成功\n");
else
printf("查找不到该整数\n");
//插入给定的整数
printf("请输入要插入的整数:");
scanf("%d",&key);
if(insert(pTree,key))
{
printf("插入成功,插入后的中序遍历结果:");
in_traverse(pTree);
printf("\n");
}
else
printf("插入失败,该二叉排序树中已经存在整数%d\n",key);
//删除给定的整数
printf("请输入要删除的整数:");
scanf("%d",&key);
if(delete_BSTree(pTree,key))
{
printf("删除成功,插入后的中序遍历结果:");
in_traverse(pTree);
printf("\n");
}
else
printf("删除失败,该二叉排序树中不存在整数%d\n",key);
return0;
}
测试结果如下:

· 织梦DedeCMS新发布图集排序在最前的方法
· ecshop商品属性排序的问题
· PHP实现操作redis的封装类完整实例
· PHP实现的一致性哈希算法完整实例
· ECSHOP支付方式的显示顺序(排序)能自定
· dedecms教程:织梦list标签按照权重排序
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-24246-5.html
第二南海建岛本来是经济发展