首先二叉排序树的查找,这里father用于记录访问点的前序,如果找到关键字,也就是程序中的e,则p指向这个结点,而father则指向p的父结点,如果没有找到关键字,则father指向查找路径上的最后一个结点,也可以理解为要插入的结点(关键插入father的左子树或者右子树)
typedef struct node {
int data;
struct node *lchild;
struct node *rchild;
}BSTNode,*BSTree;
BSTNode *searchBS(BSTNode * root,int e,BSTree &father){
//father 为空是根结点,p为空是没有这个点
BSTNode * p = root;
father =NULL;
while(p!=NULL&&p->data!=e){
father = p;
if(p->data<e) p=p->rchild;
else p = p->lchild;
}
return p;
} 这是一个非递归的程序,也可以写成递归的 ,若查找关键字成功,则p指向关键字结点,没有找到,p 指向查找路径上的最后一个结点
bool SearchBST(BSTree root,int data,BSTree father,BSTree &p)
{
if(!root)
{
p=father;
return false;
}
else if(data==root->data)
{
p=root;
return true;
}
else if(data<root->data)
return SearchBST(root->lchild,data,root,p);
else if(data>root->data)
return SearchBST(root->rchild,data,root,p);
}
插入程序
bool insertBSTree(BSTree &root ,int e){
BSTNode *p=NULL;
BSTNode *father=NULL;
BSTNode *s=NULL;
p = searchBS(root, e, father);
//SearchBST(root,e,NULL,p);
if(p)return false;
s = (BSTNode *)malloc(sizeof(BSTNode));
s->data = e;
s->lchild = NULL;
s->rchild = NULL;
if(father==NULL) root = s;
else if(e<father->data)
father->lchild = s;
else father->rchild = s;
return true;
}
void orderVisit(BSTNode * root){
if(root){
order Visit(root->lchild);
printf("the order is %d \n" ,root->data);
orderVisit(root->rchild);
}
}
void main(){
BSTNode * root=NULL ;
//为了中序遍历使得到的结果从小到大排序,使用下列数组
int A[7] = {4,2,6,1,3,5,7};
int i = 0;
for(i=0;i<7;i++){
insertBSTree(root,A[i]);
}
orderVisit( root);//中序遍历,得到的结果应该 是1,2,3,4,5,6,7
}
分享到:
相关推荐
二叉排序树创建-查找-删除,算法数据结构基础篇章,可供创建二叉排序树后对其进行插入-查找-删除等操作。
1.创建二叉排序树; 2.销毁二叉排序树; 3.清空二叉排序树; 4.插入指点结点至二叉排序树; 5.删除二叉排序树指点结点; 5.获取二叉排序树指定结点; 6.获取二叉排序树根结点; 7.获取二叉排序树结点数; 8.获取二叉...
代码里有二叉排序树插入操作递归算法,二叉排序树插入操作非递归算法,二叉排序树删除操作,创建二叉排序树,二叉排序树查找递归算法,二叉排序树查找非递归算法
二叉排序树的创建、删除、插入等操作
二叉排序树实现的学生管理 有创建插入 删除 查找等功能
掌握二叉排序树的存储方法,实现二叉排序树的创建、查找、插入、删除、平均查找长度等基本操作。 三、实验内容及要求 1、构造二叉排序树的存储结构。 2、实现创建、查找、插入、删除、平均查找长度等操作。
数据结构,二叉排序树的C++源代码。可以实现插入,删除,查找功能。
二叉排序树,用前序遍历是就是增序排列,的创建删、插入、查询
老师给的资源,对于数据结构入门的学生很有帮助的。
大学课程、数据结构、C代码、设计一个读入一串整数构成一颗二叉排序树的程序,从二叉排序树中删除一个结点,使该二叉树仍保持二叉排序树的特性。
1,动态创建二叉排序树 2,输出二叉排序树 3.判断是否为二叉排序树 4.输出查找某元素的路径 5.删除特定关键字结点
二叉排序树的基本操作,创建、插入数据、删除数据、中序遍历、销毁
(1) 由{4, 9, 0, 1, 8, 6, 3, 5, 2, 7}创建一棵二叉排序树bt并以括号表示法输出; (2) 判断bt是否为一棵二叉排序树; (3) 采用递归和非递归两种方法查找关键字为6的结点,并输出其查找路径; (4) 分别删除bt中的...
(1)键盘输入一个元素序列创建一棵二叉排序树,输出该二叉排序树的中序遍历序列; 例如,若输入 45,24,55,12,37,53,60,23,40,70 则创建的二叉排序树为: 输出结果为:12 23 24 37 40 45 53 55 60 70 (2)在(1)中...
数据结构课程设计作业以二叉排序树实现的教师年终成果管理系统,可读性比较高,包含了二叉排序树中的增删改查的功能实现,并加有基本文件操作,以进行对数据的保存和读取
用顺序表(一维数组)作存储结构,功能如下:(1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T。(2)对二叉排序树T作中序遍历,输出结果。(3)计算二叉排序树T查找成功的平均查找长度,输出结果。(4...
分别构建函数,实现二叉排序树的创建,插入数据,删除结点
二叉排序树的c语言实现,创建、插入、删除、查找……
1.学生基本数据的有序表输入 2.学生基本数据的有序表输出 3.学生基本数据的有序表的二分法查找 4.学生基本数据的有序二叉树建立 5.学生基本数据的有序二叉树前序遍历输出 6.学生基本数据的有序二叉树... 7....
二叉排序树用C语言实现,内含本人写的报告文档,仅供参考