二叉排序樹的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.doc
《二叉排序樹的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《二叉排序樹的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計.doc(35頁珍藏版)》請在匯文網(wǎng)上搜索。
1、 二叉排序樹的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計1.設(shè)計任務(wù)1) 實現(xiàn)二叉排序樹,包括生成、插入,刪除;2) 對二叉排序樹進(jìn)行先根、中根、和后根非遞歸遍歷;3) 每次對樹的修改操作和遍歷操作的顯示結(jié)果都需要在屏幕上 用樹的形狀表示出來。4) 分別用二叉排序樹和數(shù)組去存儲一個班(50人以上)的成員信 息(至少包括學(xué)號、姓名、成績3項),對比查找效率,并說明 為什么二叉排序樹效率高(或者低)。2. 函數(shù)模塊:2.1.主函數(shù)main模塊功能1.通過bstree CreatTree()操作建立二叉排序樹。 2.在二叉排序樹t中通過操作bstree InsertBST(bstree t,int key,nametyp
2、e name,double grade)插入一個節(jié)點。3. 從二叉排序樹t中通過操作void Delete(bstree &p)刪除任意節(jié)點。4. 在二叉排序樹t中通過操作bstnode *SearchBST(bstree t,keytype key)查找節(jié)點。5. 在二叉排序樹t中通過操作p=SearchBST(t,key)查詢,并修改節(jié)點信息6. 非遞歸遍歷二叉排序樹。7. 定義函數(shù)void compare()對數(shù)組和二叉排序樹的查找效率進(jìn)行比較比較。2.2創(chuàng)建二叉排序樹CreatTree模塊從鍵盤中輸入關(guān)鍵字及記錄,并同時調(diào)用插入函數(shù)并不斷進(jìn)行插入。最后,返回根節(jié)點T。2.3刪除模塊:二
3、叉排序樹上刪除一個階段相當(dāng)于刪去有序系列中的一個記錄,只要在刪除某個節(jié)點之后依舊保持二叉排序樹的性質(zhì)即可。假設(shè)二叉排序樹上刪除節(jié)點為*p(指向節(jié)點的指針為p),其雙親節(jié)點為*f(節(jié)點指針為f)。若*p節(jié)點為葉子節(jié)點,則即左右均為空樹,由于刪去葉子節(jié)點不破壞整棵樹的結(jié)構(gòu),則只需修改其雙親節(jié)點的指針即可;若*p節(jié)點只有左子樹或只有右子樹,此時只要令左子樹或右子樹直接成為其雙親節(jié)點*f的左子樹即可;若*p節(jié)點的左子樹和右子樹均不為空,其一可以令*p的左子樹為*f的左子樹,而*p的右子樹為*s的右子樹,其二可以令*p的直接前驅(qū)(或直接后繼)替代*p,然后再從二叉排序樹中刪去它的直接前驅(qū)(或直接后繼)。
4、在二叉排序樹中刪除一個節(jié)點的算法為void DeleteData(bstree &t,keytype key)若二叉排序樹t中存在關(guān)鍵字等于key的數(shù)據(jù)元素,則刪除該數(shù)據(jù)元素節(jié)點,并返回TRUE,否則返回FALSE。2.4插入模塊二叉排序樹是一種動態(tài)樹表,其特點是樹的結(jié)構(gòu)通常不是一次生成的,而是在查找的過程中,當(dāng)樹中不存在關(guān)鍵字等于給定值得節(jié)點時在進(jìn)行插入。新插入的節(jié)點一定是一個新添加的葉子節(jié)點,并且是查找不成功時查找路徑上訪問的最后一個節(jié)點的左孩子或右孩子的節(jié)點。一個無序系列可以通過構(gòu)造一棵二叉排序樹而變成一個有序系列,構(gòu)造樹的過程即為對無序系列進(jìn)行排序的過程, 并且每次插入的節(jié)點都是二叉排
5、序樹上新的葉子節(jié)點,則在進(jìn)行插入操作時,不必移動其他節(jié)點,僅需改變某個節(jié)點的指針由空變?yōu)榉强占纯?。二叉排序樹的插入算法為bstree InsertBST(bstree t,int key,nametype name,double grade) 若二叉排序樹中不存在關(guān)鍵字等于key的數(shù)據(jù)元素時,插入元素并返回TRUE。2.5查找模塊二叉排序樹又稱二叉查找樹,當(dāng)二叉排序樹不為空時,首先將給定的值和根節(jié)點的關(guān)鍵字比較,若相等則查找成功,否則將依據(jù)給定的值和根節(jié)點關(guān)鍵字之間的大小關(guān)系,分別在左子樹或右子樹上繼續(xù)進(jìn)行查找。為此定義一個二叉排序樹的查找算法為bstnode *SearchBST(bstre
6、e t,keytype key) 在根指針t所指向的二叉排序樹中查找關(guān)鍵字等于key的數(shù)據(jù)元素,如成功,返回指向該元素節(jié)點的指針,否則返回空指針。2.6效率比較compare模塊void compare()對數(shù)組和二叉排序樹的查找效率進(jìn)行比較比較。2.7二叉排序樹的遍歷先序遍歷也叫做先根遍歷。首先訪問根結(jié)點然后遍歷左子樹,最后遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹,如果二叉樹為空則返回。其實過程為:先遍歷左子樹root-left-left-left.-null,由于是先序遍歷,因此一遇到節(jié)點,便需要立即訪問;由于一直走到最左邊后,需要逐步返回到父節(jié)點訪
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 二叉排序樹 實現(xiàn) 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計
鏈接地址:http://zhizhaikeji.com/p-37728245.html