博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉排序树
阅读量:5157 次
发布时间:2019-06-13

本文共 3088 字,大约阅读时间需要 10 分钟。

int source[]={
54,90,6,69,12,37,92,28,65,83};void InsertBST(BSTree *t,int key)//在二叉排序树中插入关键字key{ head=t; while(head) //查找需要添加的父结点 { parent=head; if(key
data) //若关键字小于结点的数据 head=head->left; //在左子树上查找 else //若关键字大于结点的数据 head=head->right; //在右子树上查找 } //判断添加到左子树还是右子树 if(key
data) //小于父结点 parent->left=p; //添加到左子树 else //大于父结点 parent->right=p; //添加到右子树 }BSTree *SearchBST(BSTree *t,int key){ if(!t || t->data==key) //结点为空,或关键字相等 return t; //返回结点指针 else if(key>t->data) //关键字大于结点数据 return(SearchBST(t->right,key)); else return(SearchBST(t->left,key));}void BST_LDR(BSTree *t) //中序遍历 { if(t)//树不为空,则执行如下操作 { BST_LDR(t->left); //中序遍历左子树 printf("%d ",t->data); //输出结点数据 BST_LDR(t->right); //中序遍历右子树/ } return; } //删除结点void BST_Delete(BSTree *t,int key){ BSTree *p,*parent,*l,*l1; int child=0;//0表示左子树,1表示右子树 if(!t) return; //二叉排序树为空,则退出 p=t; parent=p; while(p) //二叉排序树有效 { if(p->data==key) { if(!p->left && !p->right) //删除节点为叶结点(左右子树都为空) { if(p==t) //被删除的是根结点 { free(p);//释放被删除结点 } else if(child==0) //删除节点是父结点的左子树 { parent->left=NULL; free(p); } else //删除节点是父结点的右子树 { parent->right=NULL; free(p); } } else if(!p->left) //删除节点只有右子树 { if(child==0) //删除节点是父结点的左子树 parent->left=p->right; else //删除节点是父结点的右子树 parent->left=p->left; free(p); //释放被删除结点 } else if(!p->right)//右子树为空,左子树不为空 { if(child==0) //是父结点的左子树 parent->right=p->right; else //是父结点的右子树 parent->right=p->left; free(p); //释放被删除结点 } else //左右子树都不为空 { l1=p; //保存左子树的父结点 l=p->right; //从当前结点的右子树进行查找 while(l->left) //左子树不为空 ,被删除节点的右子树中的最小值。 { l1=l; l=l->left; //查找左子树 } p->data=l->data; //将左子树的数据保存到被删除结点 l1->left=NULL; //设置父结点的左子树指针为空 free(l1); //释放左子树占的内存空间 } p=NULL; } else if(key
data) //需删除记录的关键字小于结点的数据 { child=0;//标记在当前结点左子树查找 parent=p; //保存当前结点作父结点 p=p->left; //查找右子树 } else //需删除记录的关键字大于结点的数据 { child=1;//标记在当前结点右子树查找 parent=p;//保存当前结点作父结点 p=p->right; //查找右子树 } } }

 

转载于:https://www.cnblogs.com/yaowen/p/4489834.html

你可能感兴趣的文章
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
PAT L2-016 愿天下有情人都是失散多年的兄妹
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
MySQL学习之备份
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
windows linux—unix 跨平台通信集成控制系统
查看>>
【编程练习】复习一下树的遍历
查看>>
邮件和短信验证码
查看>>