为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

二叉树先序删除

2017-11-23 8页 doc 20KB 17阅读

用户头像

is_729658

暂无简介

举报
二叉树先序删除二叉树先序删除 #include #include typedef struct node { int key; struct node *lchild,*rchild; }node; node *insert(struct node *t,int k)//鍏堝簭鎺掑簭 { int a,i=0; struct node *p,*q,*s,*h=NULL; struct node *arry[100]; q=(struct node*)malloc(sizeof(struct node)); s=(...
二叉树先序删除
二叉树先序删除 #include #include typedef struct node { int key; struct node *lchild,*rchild; }node; node *insert(struct node *t,int k)//鍏堝簭鎺掑簭 { int a,i=0; struct node *p,*q,*s,*h=NULL; struct node *arry[100]; q=(struct node*)malloc(sizeof(struct node)); s=(struct node*)malloc(sizeof(struct node)); q->lchild=NULL; q->rchild=NULL; q->key=k; if(t==NULL) { t=q; return t; } else{ p=t; while(p||i!=0){ while(p) { if(k > p->key) h=p; arry[i++]=p; p=p->lchild; } p=arry[--i]; p=p->rchild; } if(h==NULL){ q->lchild=t; t=q; return t; } if(h->lchild!=NULL && h->rchild!=NULL) { if(h->lchild > h->rchild) { s=h->lchild; q->lchild=s; h->lchild=q; } else { s=h->rchild; q->rchild=s; h->rchild=q; } } else { if(h->lchild!=NULL){ h->rchild=h->lchild; h->lchild=q; } else h->lchild=q; } } return t; } struct node* dele(struct node *t)//鍏堝簭鍒犻櫎 { int d,i=0; int a; struct node *s=NULL,*p,*h,*q,*f,*head; struct node *arry[100]; s=(struct node*)malloc(sizeof(node)); printf("input delete num:"); scanf("%d",&d); p=t; while( p||i!=0) { while(p!=NULL) { if(p->key==d){ s=p; } if(p->rchild && p->rchild->key==d){ f=p; } if(p->lchild && p->lchild->key==d){ f=p; } arry[i++]=p; p=p->lchild; } p=arry[--i]; p=p->rchild; } if(s->lchild!=NULL && s->rchild!=NULL) { if(f->lchild!=NULL && f->lchild->key==d) f->lchild = s->lchild; else if(f->rchild!=NULL && f->rchild->key==d) f->rchild=s->lchild; head=s->lchild; while(head->rchild!=NULL) { head=head->rchild; } if(t->key==d) { t=s->lchild; head->rchild=s->rchild; return t; } else { head->rchild=s->rchild; return t; } } else if(s->lchild!=NULL && s->rchild==NULL) { if(t->key==d){ t=s->lchild; return t; } if(f->lchild->key==d) f->lchild=s->lchild; else f->rchild=s->lchild; return t; } else if(s->lchild==NULL && s->rchild!=NULL) { if(t->key==d){ t=s->rchild; return t; } if(f->lchild->key==d) f->lchild=s->rchild; else f->rchild=s->rchild; return t; } else if(s->lchild==NULL && s->rchild==NULL) { if(t->key==d){ t=NULL; return t; } if(f->lchild->key==d) f->lchild=NULL; else f->rchild=NULL; return t; } } int i=0; void display(struct node *t) { struct node *s=t; if(s){ printf("%d\t",s->key); i++; if(i%5==0) printf("\n") ; display(s->lchild); display(s->rchild); } free(t); } int main(int argc,char *argv[]) { int i; int a[10]={3,1,6,2,10,23,20,9,18,5}; struct node *t=NULL; for(i=0;i<10;i++) t=insert(t,a[i]); for(i=0;i<2;i++) t=dele(t); display(t); }
/
本文档为【二叉树先序删除】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索