北郵數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)—二叉排序樹(共12頁(yè)).doc
《北郵數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)—二叉排序樹(共12頁(yè)).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《北郵數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)—二叉排序樹(共12頁(yè)).doc(12頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù) 據(jù) 結(jié) 構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:_二叉排序樹_學(xué)生姓名:_班 級(jí):_班內(nèi)序號(hào):_學(xué) 號(hào):_日 期:_1實(shí)驗(yàn)要求根據(jù)二叉排序樹的抽象數(shù)據(jù)類型的定義,使用二叉鏈表實(shí)現(xiàn)一個(gè)二叉排序樹。二叉排序樹的基本功能:1.二叉排序樹的建立2.二叉排序樹的查找3.二叉排序樹的插入4.二叉排序樹的刪除5.二叉排序樹的銷毀6.其他:自定義操作編寫測(cè)試main()函數(shù)測(cè)試二叉排序樹的正確性2. 程序分析2.1 存儲(chǔ)結(jié)構(gòu) 二叉鏈表Data Lchild Rchild 2.2 程序流程 (或程序結(jié)構(gòu)、或類關(guān)系圖等表明程序構(gòu)成的內(nèi)容,一般為流程圖等) 開始 2.2.1.流程圖 從文件讀取原始數(shù)據(jù) 建
2、立排序二叉樹該元素和根節(jié)點(diǎn)數(shù)據(jù)比較大小大小根節(jié)點(diǎn)移向右孩子是根節(jié)點(diǎn)移向左孩子 當(dāng)前根節(jié)點(diǎn)是否存在判斷下一個(gè)元素否該元素節(jié)點(diǎn)插入到當(dāng)前根節(jié)點(diǎn)位置是 是否還剩余元素用戶輸入操作 判斷操作退出銷毀刪除插入查找 結(jié)束 刪除該節(jié)點(diǎn)執(zhí)行查找操作執(zhí)行查找操作直到為空節(jié)點(diǎn)該元素和當(dāng)前根節(jié)點(diǎn)數(shù)據(jù)比較大小是是否銷毀完刪除最終節(jié)點(diǎn)在該位置插入其節(jié)點(diǎn) 刪除下一節(jié)點(diǎn)小大是否否是否銷毀完根節(jié)點(diǎn)移向左孩子根節(jié)點(diǎn)移向右孩子當(dāng)前根節(jié)點(diǎn)值是否相等是輸出該節(jié)點(diǎn)情況 2.2.2.偽代碼1. 從文件讀取待建樹元素2. 建樹,若待插入元素比根節(jié)點(diǎn)小,向左子樹前進(jìn)并重復(fù)比較左子樹根節(jié)點(diǎn),若待插入元素比根節(jié)點(diǎn)大,向右子樹前進(jìn)并重復(fù)比較右子樹
3、根節(jié)點(diǎn),直至找到空節(jié)點(diǎn)則插入該元素,不斷插入直至不剩下元素。3. 用戶選擇操作。4. 若用戶選擇查找,則現(xiàn)由用戶輸入待查找數(shù)值。從根節(jié)點(diǎn)開始比較,若較小則移至左子樹,若較大則移至右子樹,直至關(guān)鍵碼相等,則輸出節(jié)點(diǎn)情況。5. 若用戶選擇插入,則現(xiàn)由用戶輸入待插入數(shù)值。從根節(jié)點(diǎn)開始比較,若較小則移至左子樹,若較大則移至右子樹,直至到空節(jié)點(diǎn),則插入該元素。6. 若用戶選擇刪除,則現(xiàn)由用戶輸入待刪除數(shù)值。從根節(jié)點(diǎn)開始比較,若較小則移至左子樹,若較大則移至右子樹,直至關(guān)鍵碼相等; 1).若該節(jié)點(diǎn)為葉子節(jié)點(diǎn),則直接刪除; 2).若該節(jié)點(diǎn)無左子樹,則其雙親節(jié)點(diǎn)直接與其右子樹根節(jié)點(diǎn)連接,再刪除該節(jié)點(diǎn); 3).
4、若該節(jié)點(diǎn)有左子樹,則其左子樹的最右節(jié)點(diǎn)數(shù)值直接覆蓋該節(jié)點(diǎn)數(shù)值,再刪除最后節(jié)點(diǎn)。7. 若用戶選擇銷毀,則不斷執(zhí)行刪除操作直至不剩余節(jié)點(diǎn)。8. 若用戶選擇退出,則程序結(jié)束。2.3 關(guān)鍵算法分析關(guān)鍵代碼即刪除操作,代碼如下:void Delete(BiNode* &R)BiNode* q=new BiNode;BiNode *s=new BiNode;if(R->lch=NULL)q=R;R=R->rch;delete q;else if(R->rch=NULL)q=R;R=R->lch;delete q;elseq=R; s=R->lch; while(s-&
5、gt;rch!=NULL)q=s;s=s->rch; R->data=s->data;if(q!=R)q->rch=s->lch;elseR->lch=s->lch;delete s;void Deletedata(BiNode* &R, int key)if(R=NULL) return;if(R->data=key) Delete(R);else if(R->data>key) Deletedata(R->lch,key);else Deletedata(R->rch,key);首先先要定位到要?jiǎng)h除的節(jié)點(diǎn),不斷
6、遞歸調(diào)用deletedata這個(gè)函數(shù),找到數(shù)值與需要?jiǎng)h除節(jié)點(diǎn)的數(shù)值相等的節(jié)點(diǎn)時(shí),調(diào)用delete這個(gè)函數(shù)。刪除節(jié)點(diǎn)時(shí)需要分析三種情況。1).若該節(jié)點(diǎn)為葉子節(jié)點(diǎn),則直接刪除;2).若該節(jié)點(diǎn)無左子樹,則其雙親節(jié)點(diǎn)直接與其右子樹根節(jié)點(diǎn)連接,再刪除該節(jié)點(diǎn);3).若該節(jié)點(diǎn)有左子樹,則其左子樹的最右節(jié)點(diǎn)數(shù)值直接覆蓋該節(jié)點(diǎn)數(shù)值,再刪除最后節(jié)點(diǎn)。算法時(shí)間復(fù)雜度:O(n2)2.4 其他特殊情況處理:若文件里元素為空,不存在任何元素,則無法完成建樹,選擇查找操作時(shí)也會(huì)提示無元素;另外,若查找不存在的元素是,最后查找到空節(jié)點(diǎn)也會(huì)提示無此元素。3. 程序運(yùn)行結(jié)果分析4. 總結(jié)4.1實(shí)驗(yàn)的難點(diǎn)和關(guān)鍵點(diǎn) 本實(shí)驗(yàn)的難點(diǎn)和關(guān)
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn) 二叉排序樹 12
鏈接地址:http://zhizhaikeji.com/p-6488482.html