




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
修改后的二叉排 序树#include #include #include #define EQ(a,b) (a)=(b)#define LT(a,b) (a) (b)#define LQ(a,b) (a)lchild);printf(%4d,T-data.key);InOrderTraverse(T-rchild); /*打印二叉树*/*Status PrintTree(BiTree T,int n)if(T=NULL)return FALSE;PrintTree(T-rchild,n+1);for(int i=0;idata.key);PrintTree(T-lchild,n+1); return TRUE; */*二叉排序树的插入*/Status InsertBST(BiTree &T,KeyType key)BiTree s; if(!T)s=(BiTree)malloc(sizeof(BitNode);s-data.key=key;s-lchild=s-rchild=NULL;T=s;else if LT(key,T-data.key)InsertBST(T-lchild,key);else InsertBST(T-rchild,key);return TRUE;/*二叉排序树的查找*/BiTree SearchBST(BiTree T,KeyType key)if(!T)printf(Can not find!n);return T;else if EQ(key,T-data.key)return T;else if LT(key,T-data.key) return SearchBST(T-lchild,key); else return SearchBST(T-rchild,key);/*二叉排序树的删除*/Status Delete(BiTree &p)BiTree q,s;if(!p-rchild)/没有右孩子q=p;p=p-lchild;free(q);else if(!p-lchild)/没有左孩子q=p;p=p-rchild;free(q);else/两个孩子都有q=p;s=p-lchild;while(s-rchild)q=s;s=s-rchild;p-data=s-data;if(q!=p) q-rchild=s-lchild;else q-lchild=s-lchild;delete s;return TRUE;Status DeleteBST(BiTree &T,KeyType key)if(!T)return FALSE;elseif (EQ(key,T-data.key)return Delete(T);elseif(LT(key,T-data.key)return DeleteBST(T-lchild,key);else return DeleteBST(T-rchild,key);int main() BiTree T;/BiTree b1,b2;KeyType key;printf(创建二叉排序树n);printf(Input every key(0 to quit):);CreateBST(T);while(true) printf(Press enter to continue.); getchar(); getchar(); system(cls); Print(T);return 0;void Print(BiTree T)int choice;printf(1:中序遍历排序树n);printf(2:查找结点n);printf(3:中序遍历n);printf(4:插入结点n);printf(5:删除结点n);printf(0:退出n);printf(请选择要进行的操作:);scanf(%d,&choice);Choose(choice,T);void Choose( int choice ,BiTree &T)BiTree b2;KeyType key;int t;switch(choice)case 1: InOrderTraverse(T);break;case 2:printf(Input the key to search:);scanf(%d,&key);if(SearchBST(T,key)printf(把 key 为根的子树进行中序遍历:);b2=SearchBST(T,key);/把 key 为根的子树打印出来 InOrderTraverse(b2); else if (!SearchBST(T,key) InsertBST(T, key); printf(将key插入后并中序遍历二叉排序树); InOrderTraverse(T); break;case 3:InOrderTraverse(T);break;case 4:printf(输入要插入的数据:);scanf(%d,&key); if(SearchBST(T,key) printf(has the same number); else if(InsertBST(T, key)printf(n插入完毕!n);else printf(插入失败n);printf(中序遍历二叉排序树n);InOrderTraverse(T);break;case 5:printf(输入要删除的数据:);scanf(%d,&key);if(DeleteBST(T, key)printf(n删除完毕!n);els
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46150.2-2025锅炉和压力容器第2部分:GB/T 46150.1的符合性检查程序要求
- 天津水务考试试题及答案
- 2025年供应室消毒试题及答案
- 2025年公需科目广西发展新机遇考题及答案
- 可持续服务全球化-洞察及研究
- 紧缺性资产管理办法
- 人防设备维护管理办法
- 专业券商资产管理办法
- 蜂鸣器生产管理办法
- 衢州民工工资管理办法
- 大学生劳动教育通论知到智慧树章节测试课后答案2024年秋大连海洋大学
- 2024版农业公司与个人农产品种植合作合同范本3篇
- 亲子家庭购房合同协议
- 红军过草地课件
- 妇科进修汇报课件
- 直播选品策略与规划
- 神话故事民间故事《嫦娥奔月》绘本课件
- 人教部编版九年级语文上册《行香子》示范公开课教学课件
- 资金主管岗位工作计划
- 建材预购合同范本
- 2024年海南公务员考试申论试题(A卷)
评论
0/150
提交评论