欢迎来到天天文库
浏览记录
ID:26013273
大小:50.50 KB
页数:30页
时间:2018-11-24
《2016新编二叉排序树的生成与非递归前、中、后序遍历以及结点删除源代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#includetypedefstructbnode{intdata;structbnode*left;structbnode*right;}btree;voidinsert(btree*b,btree*s){while(1){if(b->data>=s->data){if(b->left==NULL){b->left=s;break;}else{b=b->left;}}else{if(b->right==NULL){b->right=s;break;}else{b=b->righ
2、t;}}}return;}voidpreorder(btree*b){btree*stack[100];btree*p=NULL;inttop=0;p=b;if(b!=NULL){top=1;stack[top]=p;while(top>0){p=stack[top];top--;printf("%d",p->data);if(p->right!=NULL){top++;stack[top]=p->right;}if(p->left!=NULL){top++;stack[top]=p->left;}}}return;}voidinor
3、der(btree*b){btree*stack[100];btree*p=NULL;inttop=0;p=b;do{while(p!=NULL){top++;stack[top]=p;p=p->left;}if(top>0){p=stack[top];top--;printf("%d",p->data);p=p->right;}}while(p!=NULL
4、
5、top!=0);return;}voidpoetorder(btree*b){btree*stack[100];btree*p=NULL;btree*q=NULL;intsig
6、n=0;inttop=-1;p=b;do{while(p!=NULL){top++;stack[top]=p;p=p->left;}q=NULL;sign=1;while(top!=-1&&sign){p=stack[top];if(p->right==q){top--;printf("%d",p->data);q=p;}else{p=p->right;sign=0;}}}while(top!=-1);return;}voiddelnode(btree*b,intx){btree*p=NULL;btree*q=NULL;btree*r
7、=NULL;btree*t=NULL;p=b;if(x==p->data){printf("你犯了一个很严重的错误,请自我反省1小时!");exit(1);}while(p!=NULL&&p->data!=x){if(xdata){q=p;p=p->left;}else{q=p;p=p->right;}}if(p==NULL){printf("你又犯错误了,再反省2小时!%d是不存在的傻瓜!快去反省",x);}elseif(p->left==NULL){if(q==NULL){t=p->right;}elseif(q-
8、>left==p){q->left=p->right;}else{q->right=p->right;}printf("你要删除的元素已经成功删除!");}else{r=p->left;while(r->right!=NULL){r=r->right;}r->right=p->right;if(q==NULL){t=p->left;}elseif(q->left==p){q->left=p->left;}else{q->right=p->left;}printf("要删除的元素已经成功删除!");}return;}vo
9、idfrenode(btree*p){if(p!=NULL){frenode(p->left);frenode(p->right);free(p);}return;}intmain(void){inta=0;intx=0;intb=0;btree*head=NULL;btree*s=NULL;head=(btree*)malloc(sizeof(btree));if(head==NULL){printf("headmallocerrorinmain!");exit(1);}printf("请输入根结点:");scanf("%d
10、",&a);head->data=a;head->left=NULL;head->right=NULL;printf("请输入叶子结点,以-1为终止符:");while(1){scanf("%d",&x);if(x=
此文档下载收益归作者所有