int DeleteTree(BSTree &p,int height){ ? BSTree s,q;? ? ?if(p==NULL) { printf("沒有該用戶刪除失敗\n"); return 0; } if(!p->rchild ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//沒有右孩子 { q=p;p=p->lchild ;delete q;q=NULL; } else if(!p->lchild ) ? ? ? ? ? ? ? ? ? ? ?//沒有左孩子 { q=p; p=p->rchild ;delete q ;q=NULL; } else? {? s=p->lchild; q=p; while(s->rchild) { q=s; s=s->rchild ; } p->data =s->data ; if(q!=p) q->rchild =s->lchild ; else q->lchild =s->rchild ; delete s; s=NULL; }p是要?jiǎng)h除信息的樹節(jié)點(diǎn)這個(gè)函數(shù)只能正常刪除左右孩子不為空的節(jié)點(diǎn),刪除其他節(jié)點(diǎn)我遍歷輸出信息會(huì)運(yùn)行錯(cuò)誤,有誰可以幫下我嗎
二叉排序樹刪除節(jié)點(diǎn)只能正常刪除左右子樹不為空的節(jié)點(diǎn)
慕神7194819
2016-04-23 20:03:27