版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 一.題目與要求</b></p><p><b> 問(wèn)題提出</b></p><p> 編寫(xiě)已個(gè)平衡二叉樹(shù),主要是對(duì)插入一個(gè)元素導(dǎo)致樹(shù)不平衡的情況進(jìn)處平衡化處理以及相關(guān)的處理。</p><p><b> 本系統(tǒng)涉及的知識(shí)點(diǎn)</b></p><p&g
2、t; 隊(duì)列的插入,刪除,二叉樹(shù)的建立于銷(xiāo)毀,平衡樹(shù)的平衡化,以及C語(yǔ)言中基礎(chǔ)應(yīng)用于結(jié)構(gòu)等。</p><p><b> 功能要求</b></p><p> (1).通過(guò)不斷插入的方式創(chuàng)建一棵平衡二叉樹(shù),包括輸入結(jié)點(diǎn)的關(guān)鍵字和相關(guān) 信息。</p><p> (2)按要求輸出創(chuàng)建的平衡二叉樹(shù)結(jié)點(diǎn),包括 順序(中序)輸出和按
3、層次輸出。</p><p> (3)插入新增的結(jié)點(diǎn),若結(jié)點(diǎn)不存在則插入平衡二叉樹(shù),并進(jìn)行相關(guān)調(diào)整。</p><p><b> (4)銷(xiāo)毀二叉樹(shù)。</b></p><p><b> (5)退出 </b></p><p><b> 二.功能設(shè)計(jì)</b></p
4、><p><b> 1.數(shù)據(jù)結(jié)構(gòu)的定義</b></p><p> typedef struct ElemType{</p><p> KeyType Key; //鍵值類(lèi)型</p><p> char info[20];</p><p> }ElemT
5、ype;</p><p> Typedef struct BSTNode{</p><p> ElemType data; </p><p> int bf ; //結(jié)點(diǎn)的平衡因子</p><p> struct BSTNode *lchild,*rch
6、ild;//左右孩子指針</p><p> }BSTNode,*BSTree;</p><p><b> 模塊圖 </b></p><p><b> 1.主程序的流程</b></p><p> 2.各模塊之間的層次調(diào)用 </p
7、><p><b> 程序代碼設(shè)計(jì)</b></p><p><b> 1.調(diào)平二叉樹(shù)</b></p><p> if(插入元素與當(dāng)前根元素相等) </p><p><b> { </b></p><p> printf
8、("已存在相同關(guān)鍵字的結(jié)點(diǎn)\n"); </p><p><b> }</b></p><p> if(插入元素小于當(dāng)前根元素)) </p><p><b> {</b></p><p> if(插入新結(jié)點(diǎn)不成功)</p><p>&l
9、t;b> return 0;</b></p><p> if(插入成功) </p><p> switch(查看根的平衡因子) </p><p><b> {</b></p><p><b> case +1: </b></p&
10、gt;<p><b> 進(jìn)行左平衡處理;</b></p><p><b> {</b></p><p> 檢查*T的左子樹(shù)的平衡度,并作相應(yīng)平衡處理</p><p><b> {</b></p><p> case +1: </p>
11、;<p> 令根及其左孩子的平衡因子為0;</p><p><b> 做右平衡處理;</b></p><p><b> {</b></p><p> BTree lc; </p><p> lc指向的結(jié)點(diǎn)左子樹(shù)根結(jié)點(diǎn);</p><p
12、> rc的右子樹(shù)掛接為結(jié)點(diǎn)的左子樹(shù);</p><p> lc的右孩子為原結(jié)點(diǎn); </p><p> 原結(jié)點(diǎn)指向新的結(jié)點(diǎn)lc;</p><p><b> }</b></p><p><b> break;</b></p><p> case -1:
13、 </p><p> rd指向*T的左孩子的右子樹(shù)根</p><p> switch(查看右孩子平衡因子) </p><p><b> {</b></p><p><b> case +1:</b></p><p> 根的平衡因子為-1;&
14、lt;/p><p> 根左孩子的平衡因子為0; </p><p><b> break;</b></p><p><b> case 0:</b></p><p> 令根和根左孩子的平衡因子為0;</p><p><b> break;</b>&l
15、t;/p><p><b> case -1:</b></p><p><b> 根平衡因子為0;</b></p><p> 根左孩子平衡因子為1; </p><p><b> break;</b></p><p><b> }</b
16、></p><p> 根右孩子的平衡因子為0;</p><p> 對(duì)*T的左子樹(shù)作左旋平衡處理;</p><p> 對(duì)*T作右旋平衡處理;</p><p><b> }</b></p><p><b> break;</b></p><p&
17、gt; case 0: </p><p> 令根的平衡因子為+1;</p><p><b> break;</b></p><p> case -1: </p><p> 令根的平衡因子為-1;</p><p><b> break;</b
18、></p><p><b> }</b></p><p><b> }</b></p><p><b> 2.輸出:</b></p><p><b> ?。?)中序輸出</b></p><p> 采用遞歸算法對(duì)二叉
19、樹(shù)進(jìn)行遍歷。</p><p><b> if(結(jié)點(diǎn)不為空)</b></p><p><b> {</b></p><p> If(遍歷左孩子成功)</p><p> If(遍歷結(jié)點(diǎn)成功)</p><p> If(遍歷右孩子成功)</p><p&g
20、t;<b> 返回 真</b></p><p><b> 返回假</b></p><p><b> }</b></p><p> else(結(jié)點(diǎn)為空)</p><p><b> 返回假</b></p><p><b&
21、gt; (2)按層次輸出</b></p><p> 根據(jù)隊(duì)列先進(jìn)先出的特點(diǎn),先將第一層結(jié)點(diǎn)進(jìn)隊(duì)a,對(duì)其出出隊(duì)并輸出,同時(shí)將其不為空的孩子指針入另一隊(duì)列b,當(dāng)a為空時(shí),隊(duì)b進(jìn)行出對(duì)并輸出處理,將結(jié)點(diǎn)的不為空的左右孩子入隊(duì)a,直到b 為空............如此直到兩隊(duì)均為空。</p><p><b> 根節(jié)點(diǎn)入隊(duì);</b></p>&
22、lt;p> While(a,b不同時(shí)為空)</p><p><b> {</b></p><p><b> If(i為奇數(shù))</b></p><p><b> {</b></p><p> While(a隊(duì)不空)</p><p><
23、b> {</b></p><p> a中結(jié)點(diǎn)出隊(duì)并輸出;</p><p><b> If(左孩子不空)</b></p><p><b> 左孩子入隊(duì)b;</b></p><p><b> If(有孩子不空)</b></p><p&
24、gt;<b> 右孩子入隊(duì)b;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> If(i為偶數(shù))</b></p><p><b> {</b></p>
25、<p> While(b隊(duì)不空)</p><p><b> {</b></p><p> b中結(jié)點(diǎn)出隊(duì)并輸出;</p><p><b> If(左孩子不空)</b></p><p><b> 左孩子入隊(duì)a;</b></p><p>
26、;<b> If(有孩子不空)</b></p><p><b> 右孩子入隊(duì)a;</b></p><p><b> }</b></p><p><b> }</b></p><p> I++;// 同時(shí)記錄樹(shù)的深度&
27、lt;/p><p><b> }</b></p><p><b> 3.銷(xiāo)毀二叉樹(shù)</b></p><p> 銷(xiāo)毀二叉樹(shù)的算法根據(jù)遞歸遍歷而來(lái),算法大體相識(shí)。</p><p><b> If(根節(jié)點(diǎn)不空)</b></p><p><b>
28、 {</b></p><p><b> If(左子樹(shù)不空)</b></p><p><b> 銷(xiāo)毀左子樹(shù);</b></p><p><b> If(右子樹(shù)不空)</b></p><p><b> 銷(xiāo)毀右子樹(shù);</b></p>
29、<p><b> 銷(xiāo)毀相對(duì)根節(jié)點(diǎn);</b></p><p> 根節(jié)點(diǎn)賦空;//留下來(lái)以便再次創(chuàng)建二叉樹(shù)時(shí)使用</p><p><b> }</b></p><p><b> 4.退出</b></p><p> 退出時(shí)詢問(wèn)是否確認(rèn)退出,確認(rèn)則退出,否則返回
30、到主菜單</p><p><b> 調(diào)試分析</b></p><p><b> 遇到的問(wèn)題:</b></p><p> 1)對(duì)平衡二叉樹(shù)的刪除的算法設(shè)計(jì)程序存在很大問(wèn)題。刪除節(jié)點(diǎn)后需要對(duì)新的排序樹(shù)平衡化,改變節(jié)點(diǎn)的信息,使之形成一棵新的平衡二叉樹(shù)。</p><p> ?。?)主函數(shù)中的實(shí)參和子
31、函數(shù)中的實(shí)參相等,造成調(diào)用該子函數(shù)時(shí),雖然沒(méi)有錯(cuò)誤,但其功能不能正確的實(shí)現(xiàn)。改變?cè)撟兞亢蟪绦虺晒?shí)現(xiàn)各種功能。</p><p> ?。?)一些邏輯邏輯運(yùn)算符書(shū)寫(xiě)不正確,造成實(shí)現(xiàn)的功能不正確或程序死循環(huán)。</p><p><b> 2.用戶手冊(cè)</b></p><p> 1.了解程序清單上給出的功能,并根據(jù)提示依次進(jìn)行操作。</p>
32、;<p> 2.創(chuàng)建二叉樹(shù),輸入的數(shù)據(jù)元素為整數(shù),當(dāng)輸入-123時(shí),停止創(chuàng)建。并顯示平衡二叉樹(shù)的中序凹入樹(shù)形圖。</p><p> 3.查找(輸入你要查找的元素)。</p><p> 4.插入(輸入要插入的數(shù)據(jù)元素,并輸出)</p><p> 5.刪除(刪除指定的元素,并輸出)</p><p><b> 6.
33、結(jié)束</b></p><p> 說(shuō)明:其中每一個(gè)功能實(shí)現(xiàn)后都會(huì)提示是否繼續(xù):選擇y繼續(xù),否則,終止。</p><p><b> 3.測(cè)試過(guò)程</b></p><p> 1.創(chuàng)建平衡二叉樹(shù):(中序凹入輸出)</p><p><b> 2.查找</b></p><
34、p><b> 查找成功或失敗時(shí):</b></p><p><b> 3.插入</b></p><p><b> 4.刪除,結(jié)束</b></p><p><b> 五.課程設(shè)計(jì)總結(jié)</b></p><p> 由于指針處理不當(dāng),調(diào)試過(guò)程中經(jīng)常出
35、現(xiàn)指針出錯(cuò)的情況,導(dǎo)致程序終止,經(jīng)過(guò)仔細(xì)修改后才得以改正。在程序整體設(shè)計(jì)過(guò)程中,由于忽視&的作用而導(dǎo)致程序無(wú)法正常運(yùn)行。通過(guò)此次課程設(shè)計(jì),讓我對(duì)數(shù)據(jù)結(jié)構(gòu)的重要學(xué)習(xí)內(nèi)容有了更加深刻的了解,同時(shí)也意識(shí)到自己還存在很大的不足,還有很多的知識(shí)需要完善。在編程的過(guò)程中錯(cuò)誤時(shí)在所難免的,處了要修改錯(cuò)誤外還有了解錯(cuò)誤的原因。而不是僅僅修改而已。</p><p><b> 六.參考文獻(xiàn)</b>&l
36、t;/p><p> [1] 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 嚴(yán)蔚寬 吳偉民 編著</p><p> [2] C語(yǔ)程序設(shè)計(jì) 白燕 尹業(yè)安 編著</p><p><b> 七.附錄:程序清單</b></p><p> #include<stdio.h></p><p> #include&l
37、t;stdlib.h></p><p> #define ERROR 0</p><p> #define TRUE 1</p><p> #define OK 1</p><p> #define FALSE 0</p><p> #define LH 1</p><p>
38、#define RH -1</p><p> #define EH 0</p><p> #define EQ(a,b) ((a)==(b))</p><p> #define LT(a,b) ((a)<(b))</p><p> #define LQ(a,b) ((a)<=(b))</p><p>
39、; typedef int KeyType;</p><p> typedef struct ElemType</p><p><b> {</b></p><p> KeyType Key;</p><p> char info[20];</p><p> }ElemType;<
40、;/p><p> typedef struct BSTNode</p><p><b> {</b></p><p> ElemType data;</p><p><b> int bf;</b></p><p> struct BSTNode *lchild,
41、*rchild;</p><p> }BSTNode,*BSTree;</p><p> typedef struct QNode</p><p><b> {</b></p><p><b> BSTree e;</b></p><p> struct QNode
42、 *next;</p><p> }QNode,*QNodeP;</p><p> typedef struct </p><p><b> { </b></p><p> QNodeP front;</p><p> QNodeP rear;</p><p>
43、 }LinkQueue;</p><p> void CreatBalanceTree(BSTree &T);</p><p> void R_Rotate(BSTree &p);</p><p> void L_Rotate(BSTree &p);</p><p> int InsertAVL(BSTree
44、&T,ElemType e);</p><p> void LeftBalance(BSTree &T);</p><p> void RightBalance(BSTree &T);</p><p> int Print_Mid(BSTree T);</p><p> int Visit(BSTree T);
45、</p><p> int WideTraverse(BSTree T);</p><p> void Destory(BSTree &T);</p><p> int flag=0;</p><p> bool taller;</p><p> int number;//計(jì)數(shù)變量</p&g
46、t;<p> void main()</p><p><b> {</b></p><p> BSTree T=NULL;</p><p> int chose;</p><p> ElemType e;</p><p> printf("\n=======平衡
47、二叉樹(shù)=======\n");</p><p><b> do{</b></p><p> printf("||功能菜單: ||\n");</p><p> printf("|| 1--創(chuàng)建平衡二叉樹(shù) ||\n");</p><p> prin
48、tf("|| 2--按 要 求 輸 出 ||\n");</p><p> printf("|| 3--插 入 元 素 ||\n");</p><p> printf("|| 4--銷(xiāo)毀 二 叉 樹(shù) ||\n");</p><p> printf("|| 5--退
49、 出 ||\n");</p><p> printf("\n請(qǐng)選擇:");</p><p><b> do{</b></p><p> scanf("%d",&chose);</p><p> }while(flag==0&&chose
50、!=1&&chose!=5&&printf("尚未創(chuàng)建,必須先創(chuàng)建\n請(qǐng)選擇:"));</p><p> system("cls");</p><p> switch(chose)</p><p><b> {</b></p><p><
51、b> default:</b></p><p> printf("輸入出錯(cuò)\n");</p><p><b> case 1:</b></p><p><b> number=0;</b></p><p> CreatBalanceTree(T);&l
52、t;/p><p><b> flag=1;</b></p><p> system("cls");</p><p><b> break;</b></p><p><b> case 2:</b></p><p> printf
53、("共有%d個(gè)結(jié)點(diǎn)\n",number);</p><p> printf("有序輸出:");</p><p> Print_Mid(T);</p><p> printf("\n\n按層輸出:");</p><p> WideTraverse(T);</p>
54、<p> printf("\n\n\n");</p><p><b> break;</b></p><p><b> case 3:</b></p><p> printf("插入元素:\n");</p><p> printf(&quo
55、t;請(qǐng)輸入關(guān)鍵字(輸入0停止):");</p><p> scanf("%d",&e.Key);</p><p> flushall();</p><p> printf("輸入相關(guān)信息(0-20字符):");</p><p> scanf("%s",e.i
56、nfo);</p><p> InsertAVL(T,e);</p><p><b> break;</b></p><p><b> case 4:</b></p><p> printf("已銷(xiāo)毀平衡二叉樹(shù)\n");</p><p> Des
57、tory(T);</p><p><b> break;</b></p><p><b> case 5:</b></p><p> printf("確認(rèn)退出? 1--YES 2--NO\n");</p><p> if(scanf("%d",&a
58、mp;chose),chose==1) </p><p><b> exit(1);</b></p><p> system("cls");</p><p><b> }</b></p><p> }while(1);</p><p><b&
59、gt; }</b></p><p> void CreatBalanceTree(BSTree &T)</p><p><b> {</b></p><p> ElemType e;</p><p> printf("\n\n創(chuàng)建平衡二叉樹(shù)\n");</p>
60、<p> printf("請(qǐng)輸入關(guān)鍵字(輸入0停止):");</p><p> scanf("%d",&e.Key);</p><p> while(e.Key)</p><p><b> {</b></p><p> flushall();</
61、p><p> printf("輸入相關(guān)信息(0-20字符):");</p><p> scanf("%s",e.info);</p><p> printf("\n");</p><p> if(InsertAVL(T,e))</p><p><b&
62、gt; number++;</b></p><p> printf("請(qǐng)輸入關(guān)鍵字(輸入0停止):");</p><p> scanf("%d",&e.Key);</p><p><b> }</b></p><p><b> }</b
63、></p><p> int Print_Mid(BSTree T)</p><p><b> {</b></p><p><b> if(T)</b></p><p><b> {</b></p><p> if(Print_Mid(T
64、->lchild))</p><p> if(Visit(T))</p><p> if(Print_Mid(T->rchild))</p><p> return OK;</p><p> return ERROR;</p><p><b> }</b></p>
65、<p> else return OK;</p><p><b> }</b></p><p> int Visit(BSTree T)</p><p><b> {</b></p><p> printf("%d ",T->data.Key);&
66、lt;/p><p> return OK;</p><p><b> }</b></p><p> int InitQueue(LinkQueue &Q)</p><p><b> {</b></p><p> Q.front=Q.rear=(QNodeP)ma
67、lloc(sizeof(QNode));</p><p> if(!Q.front)</p><p> return ERROR;</p><p> Q.front->next=NULL;</p><p> return OK;</p><p><b> }</b></p&g
68、t;<p> int QueueEmpty(LinkQueue Q)</p><p><b> {</b></p><p> if(Q.front==Q.rear)</p><p> return TRUE;</p><p> else return FALSE;</p><p
69、><b> }</b></p><p> int EnQueue(LinkQueue &Q,BSTree p)</p><p><b> {</b></p><p> QNodeP q=NULL;</p><p> q=(QNodeP)malloc(sizeof(QNode)
70、);</p><p><b> if(!q)</b></p><p> return ERROR;</p><p><b> q->e=p;</b></p><p> q->next=NULL;</p><p> Q.rear->next=q;&l
71、t;/p><p><b> Q.rear=q;</b></p><p> return OK;</p><p><b> }</b></p><p> int DeQueue(LinkQueue &Q,BSTree &p)</p><p><b>
72、; {</b></p><p> QNodeP q=NULL;</p><p> if(Q.front==Q.rear)</p><p> return ERROR;</p><p> q=Q.front->next;</p><p><b> p=q->e;</b&
73、gt;</p><p> Q.front->next=q->next;</p><p> if(!q->next)</p><p> Q.rear=Q.front;</p><p><b> free(q);</b></p><p> return OK;</p&
74、gt;<p><b> }</b></p><p> int WideTraverse(BSTree T)</p><p><b> {</b></p><p> LinkQueue Q1,Q2;</p><p> BSTree p=NULL;</p><
75、p><b> int i=1;</b></p><p> InitQueue(Q1);</p><p> InitQueue(Q2);</p><p> printf("\n按層輸出:\n");</p><p><b> if(T)</b></p>
76、<p> EnQueue(Q1,T);</p><p> while((!QueueEmpty(Q1))||(!QueueEmpty(Q2)))</p><p><b> {</b></p><p> printf("第%d層:",i);</p><p><b> if(
77、i%2)</b></p><p> while(!QueueEmpty(Q1))</p><p><b> {</b></p><p> DeQueue(Q1,p);</p><p><b> Visit(p);</b></p><p> if(p-&g
78、t;lchild)</p><p> EnQueue(Q2,p->lchild);</p><p> if(p->rchild)</p><p> EnQueue(Q2,p->rchild);</p><p><b> }</b></p><p><b> e
79、lse</b></p><p> while(!QueueEmpty(Q2))</p><p><b> {</b></p><p> DeQueue(Q2,p);</p><p><b> Visit(p);</b></p><p> if(p->
80、;lchild)</p><p> EnQueue(Q1,p->lchild);</p><p> if(p->rchild)</p><p> EnQueue(Q1,p->rchild);</p><p><b> }</b></p><p> printf(&quo
81、t;\n");</p><p><b> i++;</b></p><p><b> }</b></p><p> printf("該樹(shù)共有%d層\n",i-1);</p><p> return OK;</p><p><b>
82、; }</b></p><p> int InsertAVL(BSTree &T,ElemType e)</p><p><b> {</b></p><p><b> if(!T)</b></p><p><b> {</b></p>
83、<p> T=(BSTree)malloc(sizeof(BSTNode));</p><p><b> if(!T) </b></p><p> exit(ERROR);</p><p> T->data=e;</p><p> T->lchild=T->rchild=NULL
84、;</p><p><b> T->bf=EH;</b></p><p> taller=TRUE;</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b&
85、gt;</p><p> if(EQ(e.Key,T->data.Key))</p><p><b> {</b></p><p> taller=FALSE;</p><p> printf("樹(shù)中存在此關(guān)鍵字\n");</p><p> return ERR
86、OR;</p><p><b> }</b></p><p> if(LT(e.Key,T->data.Key))</p><p><b> {</b></p><p> if(!InsertAVL(T->lchild,e))</p><p> retu
87、rn ERROR;</p><p> if(taller)</p><p><b> {</b></p><p> switch(T->bf)</p><p><b> {</b></p><p><b> case LH:</b><
88、;/p><p> LeftBalance(T);</p><p> taller=FALSE;</p><p><b> break;</b></p><p><b> case EH:</b></p><p><b> T->bf=LH;</b&
89、gt;</p><p> taller=TRUE;</p><p><b> break;</b></p><p><b> case RH:</b></p><p><b> T->bf=EH;</b></p><p> taller=
90、FALSE;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else
91、</b></p><p><b> {</b></p><p> if(!InsertAVL(T->rchild,e))</p><p> return ERROR;</p><p> if(taller)</p><p><b> {</b>&l
92、t;/p><p> switch(T->bf)</p><p><b> {</b></p><p><b> case LH:</b></p><p><b> T->bf=EH;</b></p><p> taller=FALSE;
93、</p><p><b> break;</b></p><p><b> case EH:</b></p><p><b> T->bf=RH;</b></p><p> taller=TRUE;</p><p><b> b
94、reak;</b></p><p><b> case RH:</b></p><p> RightBalance(T);</p><p> taller=FALSE;</p><p><b> break;</b></p><p><b>
95、}</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> return OK;</p><p><b> }</b><
96、/p><p> void LeftBalance(BSTree &T)</p><p><b> {</b></p><p> BSTree lc=NULL,rd=NULL;</p><p> lc=T->lchild;</p><p> switch(lc->bf)&l
97、t;/p><p><b> {</b></p><p><b> case LH:</b></p><p> T->bf=lc->bf=EH;</p><p> R_Rotate(T);</p><p><b> break;</b>&
98、lt;/p><p><b> case RH:</b></p><p> rd=lc->rchild;</p><p> switch(rd->bf)</p><p><b> {</b></p><p><b> case LH:</b&g
99、t;</p><p><b> T->bf=RH;</b></p><p> lc->bf=EH;</p><p><b> break;</b></p><p><b> case EH:</b></p><p> T->b
100、f=lc->bf=EH;</p><p><b> break;</b></p><p><b> case RH:</b></p><p><b> T->bf=EH;</b></p><p> lc->bf=LH;</p><p
101、><b> break;</b></p><p><b> }</b></p><p> rd->bf=EH;</p><p> L_Rotate(T->lchild);</p><p> R_Rotate(T);</p><p><b>
102、; }</b></p><p><b> }</b></p><p> void RightBalance(BSTree &T)</p><p><b> {</b></p><p> BSTree lc=NULL,rd=NULL;</p><p&g
103、t; rd=T->rchild;</p><p> switch(rd->bf)</p><p><b> {</b></p><p><b> case RH:</b></p><p> T->bf=rd->bf=EH;</p><p>
104、 L_Rotate(T);</p><p><b> break;</b></p><p><b> case LH:</b></p><p> lc=rd->lchild;</p><p> switch(lc->bf)</p><p><b>
105、; {</b></p><p><b> case RH:</b></p><p><b> T->bf=LH;</b></p><p> rd->bf=EH;</p><p><b> break;</b></p><p&
106、gt;<b> case EH:</b></p><p> T->bf=rd->bf=EH;</p><p><b> break;</b></p><p><b> case LH:</b></p><p><b> T->bf=EH;&
107、lt;/b></p><p> rd->bf=RH;</p><p><b> break;</b></p><p><b> }</b></p><p> lc->bf=EH;</p><p> R_Rotate(T->rchild);&l
108、t;/p><p> L_Rotate(T);</p><p><b> }</b></p><p><b> }</b></p><p> void R_Rotate(BSTree &p)//右旋</p><p><b> {</b><
109、;/p><p> BSTree lc=NULL;</p><p> lc=p->lchild;</p><p> p->lchild=lc->rchild;</p><p> lc->rchild=p;</p><p><b> p=lc;</b></p>
110、<p><b> }</b></p><p> void L_Rotate(BSTree &p)</p><p><b> {</b></p><p> BSTree rc=NULL;</p><p> rc=p->rchild;</p><
111、p> p->rchild=rc->lchild;</p><p> rc->lchild=p;</p><p><b> p=rc;</b></p><p><b> }</b></p><p> void Destory(BSTree &T)</p&
112、gt;<p><b> {</b></p><p><b> if(T)</b></p><p><b> {</b></p><p> if(T->lchild)</p><p> Destory(T->lchild);</p>
113、<p> if(T->rchild)</p><p> Destory(T->rchild);</p><p> free(T);//必須先銷(xiāo)毀左右孩子</p><p><b> T=NULL;</b></p><p><b> }</b></p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 平衡二叉樹(shù)匹配課程設(shè)計(jì)
- 平衡二叉樹(shù)匹配課程設(shè)計(jì)
- 二叉樹(shù)課程設(shè)計(jì)
- 遍歷二叉樹(shù)課程設(shè)計(jì)
- 課程設(shè)計(jì) 排序二叉樹(shù)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)--二叉排序樹(shù)調(diào)整為平衡二叉樹(shù)
- 課程設(shè)計(jì)---判斷完全二叉樹(shù)
- 二叉樹(shù)基本操作課程設(shè)計(jì)
- 課程設(shè)計(jì)---二叉樹(shù)的查找
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----二叉樹(shù)平衡的判定
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉排序樹(shù)和平衡二叉樹(shù)的判別
- 二叉樹(shù)的基本操作課程設(shè)計(jì)
- 課程設(shè)計(jì)---完全二叉樹(shù)的判斷
- 二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 二叉樹(shù)論文 二叉樹(shù)的應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---線索二叉樹(shù)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--二叉樹(shù)的算法
- 《數(shù)據(jù)結(jié)構(gòu)遍歷二叉樹(shù)》課程設(shè)計(jì)
- 平衡二叉樹(shù)的生成過(guò)程
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---計(jì)算二叉樹(shù)高度
評(píng)論
0/150
提交評(píng)論