《2022年数据结构二叉排序树程序 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构二叉排序树程序 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#include#include#define FALSE 0;#define TRUE 1;typedef struct btnode char data;struct btnode*Llink;struct btnode*Rlink;btnode,*btree;/查找int SearchBST(btree root,int key,btree f,btree&p)if(!root)p=f;return FALSE;else if(key=root-data)p=root;return TRUE;else if(keydata)return SearchBST(root-Llink,key,
2、root,p);else return SearchBST(root-Rlink,key,root,p);/插入int InserBST(btree&root,int e)btree p=NULL;if(!SearchBST(root,e,NULL,p)btree s;s=(btree)malloc(sizeof(btnode);s-data=e;s-Llink=s-Rlink=NULL;if(!p)root=s;else if(edata)p-Llink=s;else p-Rlink=s;return TRUE;else return FALSE;/删除int Delete(btree&ro
3、ot)btree q,s;if(!root-Rlink)q=root;root=root-Llink;free(q);else if(!root-Llink)q=root;root=root-Rlink;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -free(q);else q=root;s=root-Llink;while(s-Rlink)q=s;s=s-Rlink;root-data=s-data;if(q!=root)q-Rlink=s-Llink;else q-Llink=s-Llink;delete s;return TRUE;int DeleteBST(b
4、tree&root,int key)if(root=0)return FALSE;if(root)if(key=root-data)return Delete(root);else if(keydata)return DeleteBST(root-Llink,key);else return DeleteBST(root-Rlink,key);/中序遍历void InOrder(btree root)if(root!=NULL)InOrder(root-Llink);printf(%d,root-data);InOrder(root-Rlink);void main()btree root=N
5、ULL;int n;int x;int e;printf(1.建立二叉排序树n);printf(2.插入 n);printf(3.删除 n);printf(0.退出 n);while(n)printf(n 请选择一个操作:);名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 3 页 -scanf(%d,&n);switch(n)case 1:printf(请输入 6 个整数建立二叉排序树:n);for(n=1;n7;n+)scanf(%d,&x);e=x;InserBST(root,e);printf(n 这个二叉排序树的中序遍历结果为:n);InOrder(root);break
6、;case 2:printf(n 请输入要插入的数据:);scanf(%d,&x);e=x;InserBST(root,e);printf(n 此时二叉排序树的中序遍历结果为:n);InOrder(root);printf(n);break;case 3:printf(请输入要删除的元素:);scanf(%d,&x);DeleteBST(root,x);printf(n 此时二叉排序树的中序遍历结果为:n);InOrder(root);printf(n);break;case 0:break;default:printf(输入错误!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 3 页 -