用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹全代碼_第1頁
用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹全代碼_第2頁
用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹全代碼_第3頁
用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹全代碼_第4頁
用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹全代碼_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)學(xué)與計(jì)算機(jī)學(xué)院課程設(shè)計(jì)說明書課 程 名 稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 課 程 代 碼: 6013799 題 目: 二叉排序樹的實(shí)現(xiàn) 年級(jí)/專業(yè)/班: 10 級(jí)計(jì)科(3)班 學(xué) 生 姓 名: 學(xué) 號(hào): 開 始 時(shí) 間: 2012 年 12 月 25 日完 成 時(shí) 間: 2013 年 01 月 8 日課程設(shè)計(jì)成績:學(xué)習(xí)態(tài)度及平時(shí)成績(30)技術(shù)水平與實(shí)際能力(20)創(chuàng)新(5)說明書撰寫質(zhì)量(45)總 分(100)指導(dǎo)教師簽名: 年 月 日二叉排序樹的實(shí)現(xiàn) 目 錄 1 1 引引 言言.11.1 問題的提出 .11.2 任務(wù)與分析.12 2 程序的主要功能程序的主要功能.22.1 二叉排序樹的建立.22.

2、2 二叉排序樹的中序遍歷.22.3 二叉排序樹中元素的查找.22.4 二叉排序樹中元素的刪除.33 3 程序運(yùn)行平臺(tái)程序運(yùn)行平臺(tái).44 4 總體設(shè)計(jì)總體設(shè)計(jì).55 5 程序類的說明程序類的說明.66 6 模塊模塊.96.1 中序遍歷模塊 .96.2 刪除模塊 .97 7 系統(tǒng)測(cè)試系統(tǒng)測(cè)試.127.1 順序存儲(chǔ) .127.2 二叉鏈表存儲(chǔ) .168 8 結(jié)論結(jié)論.19總 結(jié).19心得體會(huì).20參考文獻(xiàn)參考文獻(xiàn).21全部代碼全部代碼.22二叉鏈表結(jié)構(gòu)C.22二叉鏈表結(jié)構(gòu)C+ .26順序存儲(chǔ)結(jié)構(gòu)C.29 二叉排序樹的實(shí)現(xiàn)摘摘 要要 數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操作對(duì)象以及它們

3、之間的關(guān)系和操作等的學(xué)科。本課程設(shè)計(jì)中的二叉排序樹,可以用順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)兩種算法計(jì)算。本課程設(shè)中的二叉排序樹,一共要實(shí)現(xiàn)四項(xiàng)基本的功能。它們分別是二叉搜索樹的創(chuàng)建、中序遍歷、查找結(jié)點(diǎn)和刪除結(jié)點(diǎn)。關(guān)鍵詞:二叉排序樹;中序遍歷;搜索結(jié)點(diǎn);刪除結(jié)點(diǎn);CC+-1-二叉排序樹的實(shí)現(xiàn)1 引 言 1.1 問題的提出 研究關(guān)于如何創(chuàng)建二叉排序樹并對(duì)樹進(jìn)行遍歷,查找和刪除等操作,同時(shí)關(guān)注用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)帶來的區(qū)別。1.2 任務(wù)與分析 用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)二叉排序樹:(1)以回車(n)為輸入結(jié)束標(biāo)志,輸入數(shù)列 L,生成一棵二叉排序樹 T;(2)對(duì)二叉排序樹 T 作中序遍歷,輸出結(jié)果;(3)

4、輸入元素 x,查找二叉排序樹 T,若存在含 x 的結(jié)點(diǎn),則刪除該結(jié)點(diǎn),并作中序遍歷(執(zhí)行操作 2);否則輸出信息“無 x” 。-2-二叉排序樹的實(shí)現(xiàn)2 程序的主要功能2.1 二叉排序樹的建立建二叉樹的結(jié)點(diǎn)至少應(yīng)當(dāng)包含三個(gè)域,分別存放結(jié)點(diǎn)的數(shù)據(jù) data,左子女結(jié)點(diǎn)指針 leftChild 和右子女結(jié)點(diǎn)指針 rightChild。整個(gè)二叉樹的鏈表要有一個(gè)表頭指針,它指向二叉樹的根結(jié)點(diǎn),其作用是當(dāng)作樹的訪問點(diǎn)從空的二叉排序樹開始,經(jīng)過一系列的查找插入操作以后,生成了一棵二叉排序樹。根據(jù)二叉排序樹的定義,建立一棵二叉排序樹的過程是按照待排序序列元素的先后次序,不斷動(dòng)態(tài)生成二叉樹的結(jié)點(diǎn),逐個(gè)插入到二叉

5、樹中。若 p 為根結(jié)點(diǎn)指針,b 為當(dāng)前待插入元素,其過程可以描述為:若為空樹(p=nil) ,動(dòng)態(tài)生成一個(gè)結(jié)點(diǎn),其數(shù)據(jù)域?yàn)楫?dāng)前待插入元素 b,左、右指針域?yàn)椤翱铡?,p 指向該結(jié)點(diǎn)。若非空樹,比較 b 與根結(jié)點(diǎn)數(shù)據(jù) data(p)如果 bdata) *p=t;return (1); else if(keydata) searchBST(t-lchild,key,t,p); else searchBST(t-rchild,key,t,p); insertBSTinsertBST 的聲明的聲明 insertBST(node *t,int key) node p=NULL,s=NULL; if(!s

6、earchBST(*t,key,NULL,&p) s=(node)malloc(sizeof(BSTnode); s-data=key; s-lchild=s-rchild=NULL; if(!p) *t=s; else-8-二叉排序樹的實(shí)現(xiàn) if(keydata) p-lchild=s; else p-rchild=s; return (1); else return (0);inorderTraverseinorderTraverse 類的聲明類的聲明inorderTraverse(node *t) if(*t) if(inorderTraverse(&(*t)-lchil

7、d) printf(%d ,(*t)-data); if(inorderTraverse(&(*t)-rchild); return(1) ;DeleteDelete 類的聲明類的聲明node Delete(node t,int key) node p=t,q=NULL,s,f; while(p!=NULL) if(p-data=key) break; q=p; if(p-datakey) p=p-lchild; else p=p-rchild; if(p=NULL) return t; if(p-lchild=NULL) -9-二叉排序樹的實(shí)現(xiàn) if(q=NULL) t=p-rchi

8、ld; else if(q-lchild=p) q-lchild=p-rchild; else q-rchild=p-rchild; free(p); else f=p; s=p-lchild; while(s-rchild) f=s; s=s-rchild; if(f=p) f-lchild=s-lchild; else f-rchild=s-lchild; p-data=s-data; free (s); return t;-10-二叉排序樹的實(shí)現(xiàn) 6 模塊6.1 中序遍歷模塊系統(tǒng)將提示用戶輸入新添加的數(shù)據(jù),輸入結(jié)束后進(jìn)行中序遍歷關(guān)鍵代碼: inorderTraverse(node *t)

9、 /*中序遍歷函數(shù)*/ if(*t) if(inorderTraverse(&(*t)-lchild) /*中序遍歷根的左子樹*/ printf(%d ,(*t)-data); /*輸出根結(jié)點(diǎn)*/ if(inorderTraverse(&(*t)-rchild); /*中序遍歷根的右子樹*/ return(1) ;6.2 刪除模塊系統(tǒng)將對(duì)用戶輸入的數(shù)進(jìn)行查找,查找到之后刪除此數(shù),并對(duì)全部數(shù)據(jù)進(jìn)行中序遍歷。關(guān)鍵代碼:node Delete(node t,int key) /*刪除函數(shù)*/ node p=t,q=NULL,s,f; while(p!=NULL) /*查找要?jiǎng)h除的點(diǎn)*

10、/-11-二叉排序樹的實(shí)現(xiàn) if(p-data=key) break; q=p; if(p-datakey) p=p-lchild; else p=p-rchild; if(p=NULL) return t; /*查找失敗*/ if(p-lchild=NULL) /*p 指向當(dāng)前要?jiǎng)h除的結(jié)點(diǎn)*/ if(q=NULL) t=p-rchild; /*q 指向要?jiǎng)h結(jié)點(diǎn)的父母*/ else if(q-lchild=p) q-lchild=p-rchild; /*p 為 q 的左孩子*/ else q-rchild=p-rchild;/*p 為 q 的右孩子*/ free(p); else /*p 的左

11、孩子不為空*/ f=p; s=p-lchild;-12-二叉排序樹的實(shí)現(xiàn) while(s-rchild) /*左拐后向右走到底*/ f=s; s=s-rchild; if(f=p) f-lchild=s-lchild; /*重接 f 的左子樹*/ else f-rchild=s-lchild; /*重接 f 的右子樹*/ p-data=s-data; free (s);return t;-13-二叉排序樹的實(shí)現(xiàn)7 系統(tǒng)測(cè)試首先進(jìn)入 VC+6.0,打開工程 zjr.dsw,然后進(jìn)入源程序,也可以不打開工程,直接雙擊 zjr 文件夾下的 zjr.exe 文件即可運(yùn)行程序。7.1 順序存儲(chǔ)圖 7.1

12、.1 打開程序,成功顯示提示信息-14-二叉排序樹的實(shí)現(xiàn)圖 7.1.2 輸入數(shù)據(jù),以 0 結(jié)束輸入,操作成功-15-二叉排序樹的實(shí)現(xiàn)圖 7.1.3 功能 1:中序輸出數(shù)據(jù),操作成功圖 7.1.4 功能 2:刪除數(shù)據(jù),顯示提示信息,操作成功-16-二叉排序樹的實(shí)現(xiàn)圖 7.1.5 刪除數(shù)據(jù),操作成功-17-二叉排序樹的實(shí)現(xiàn)圖 7.1.6 重復(fù)執(zhí)行程序,操作成功7.2 二叉鏈表存儲(chǔ)圖 7.2.1 打開程序,顯示提示信息,操作成功-18-二叉排序樹的實(shí)現(xiàn)圖 7.2.2 功能 1:輸入數(shù)據(jù),進(jìn)行中序遍歷,操作成功-19-二叉排序樹的實(shí)現(xiàn)圖 7.2.3 功能 2:輸入數(shù)據(jù),進(jìn)行刪除,操作失敗,因?yàn)闆]有此數(shù)

13、據(jù),顯示 錯(cuò)誤信息圖 7.2.4 功能 2:輸入數(shù)據(jù),進(jìn)行中序遍歷,操作成功通過上述測(cè)試,本系統(tǒng)實(shí)現(xiàn)了二叉樹的生成,中序遍歷,查找刪除功能,能避免數(shù)據(jù)的輸入錯(cuò)誤等。驗(yàn)證結(jié)果正確,說明其符合算法設(shè)計(jì)的要求:(1)正確性、可讀性、健壯性、效率與低儲(chǔ)存量需求.要寫一個(gè)優(yōu)質(zhì)的算法,就必須考慮其時(shí)間復(fù)雜度(它表示隨問題的規(guī)模 n 的增大,算法執(zhí)行時(shí)間的增長率和 f(n)的增長率相同)和空間復(fù)雜度。遍歷二叉樹的算法中的基本操作是訪問結(jié)點(diǎn),則不論按哪一次次序進(jìn)行遍歷,對(duì)含 n 個(gè)結(jié)點(diǎn)的二叉樹,其時(shí)間復(fù)雜度都為 O(n) 。所需空間為遍歷過程中棧的最大容量,即樹的深度,最壞情況下為 n,則空間復(fù)雜度也為 O(

14、n) 。-20-二叉排序樹的實(shí)現(xiàn)8 結(jié)論總 結(jié)這次課程設(shè)計(jì)使我對(duì)數(shù)據(jù)結(jié)構(gòu)認(rèn)識(shí)深刻了許多,其中最深刻的是我理解了用二叉鏈表結(jié)構(gòu)存儲(chǔ)實(shí)現(xiàn)二叉排序樹,同時(shí)也加深了對(duì)二叉樹的理解。本課程設(shè)計(jì)實(shí)現(xiàn)了二叉排序樹的創(chuàng)建、中序遍歷、刪除二叉排序樹中某個(gè)結(jié)點(diǎn),。在進(jìn)行搜索時(shí),還可以采用更好的搜索結(jié)構(gòu)即動(dòng)態(tài)搜索結(jié)構(gòu)。當(dāng)沒有找到時(shí),可以將其插入,而不是僅僅提示未找到。通過這一次的課程設(shè)計(jì),我已經(jīng)會(huì)用二叉鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)對(duì)二叉排序樹的的創(chuàng)建,中序遍歷,查找和某個(gè)刪除結(jié)點(diǎn)等基本操作。但我同時(shí)也發(fā)現(xiàn)了自己許多不足之處 。首先,對(duì)數(shù)據(jù)結(jié)構(gòu)的掌握還不夠。雖然完成了程序,但是只用到了基本的結(jié)點(diǎn)以及鏈表,在數(shù)據(jù)結(jié)構(gòu)的選擇上避重就

15、輕,覆蓋面較小,不能很好的體現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的掌握度,同時(shí)也缺少了適當(dāng)?shù)腻憻?,在這方面還需要自己主動(dòng)去提高。其次,在程序整體的設(shè)計(jì)上還不夠完善,各模塊可以適當(dāng)增加內(nèi)容,界面還可以更加的人性化些,這樣整個(gè)程序才具有更強(qiáng)的美觀性與實(shí)用性??偠灾?,這次課程設(shè)計(jì)給了我很大啟發(fā),我明白了,不管遇到什么問題,只要抓住根源,不氣餒,從不同方面去攻破它,終究會(huì)成功,生活也是如此。在今后的工作、學(xué)習(xí)中我將認(rèn)真總結(jié)經(jīng)驗(yàn)教訓(xùn),努力使自己成為一名技術(shù)過硬、工作嚴(yán)謹(jǐn)、思維活躍的工程人員,為提高人們的生活質(zhì)量做出更大的貢獻(xiàn)。-21-二叉排序樹的實(shí)現(xiàn)心得體會(huì)課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)的知識(shí),也培養(yǎng)了

16、我如何去把握一件事情,如何去做一件事情,課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不可少的過程。我這次設(shè)計(jì)的科目是數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操作對(duì)象(數(shù)據(jù)元素)以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,而且確保經(jīng)過這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來的結(jié)構(gòu)類型。這次通過對(duì)二叉排序樹的深入研究,我又一次的溫習(xí)了 c,c+和數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識(shí),盡管這中間經(jīng)歷好多困難,但我通過查找多種資料,利用網(wǎng)絡(luò)優(yōu)勢(shì),完成了任務(wù)。我這次課程設(shè)計(jì)代碼中主要使用了鏈表的循環(huán)和遍歷這兩種操作。循環(huán)鏈表是單鏈表的另一種形式。遍歷是指沿著某條收索路線,依次對(duì)

17、樹中每個(gè)節(jié)點(diǎn)均作一次且僅作一次訪問。通過這次的課程設(shè)計(jì),更是讓我深刻認(rèn)識(shí)到自己在學(xué)習(xí)中的不足,同時(shí)也找到了克服這些不足的方法,這是一筆很大的資源。在以后的學(xué)習(xí)中,我們應(yīng)該利用更多的時(shí)間去上機(jī)實(shí)驗(yàn),加強(qiáng)自學(xué)的能力、多編寫程序,相信不久以后我們的編程能力都會(huì)有很大的提高,能創(chuàng)作出更多更完善更有新意的作品出來。-22-二叉排序樹的實(shí)現(xiàn)參考文獻(xiàn)1 譚浩強(qiáng) 編著. 程序設(shè)計(jì). 北京:清華大學(xué)出版社,2000 2 王珊珊,張志航 編著. C+程序設(shè)計(jì)教程. 北京:機(jī)械工業(yè)出版社,20113 嚴(yán)蔚敏,吳偉民 編著. 數(shù)據(jù)結(jié)構(gòu). 北京:清華大學(xué)出版社,2001-23-二叉排序樹的實(shí)現(xiàn)全部代碼全部代碼二叉鏈表結(jié)

18、構(gòu)二叉鏈表結(jié)構(gòu) c#include#includetypedef struct Tnode int data; /*輸入的數(shù)據(jù)*/ struct Tnode *lchild,*rchild; /*結(jié)點(diǎn)的左右指針,分別指向結(jié)點(diǎn)的左右孩子*/ *node,BSTnode;searchBST(node t,int key,node f,node *p) /*查找函數(shù)*/ if(!t)*p=f;return (0); /*查找不成功*/else if(key=t-data) *p=t;return (1); /*查找成功*/ else if(keydata) searchBST(t-lchild,ke

19、y,t,p); /*在左子樹中繼續(xù)查找*/else searchBST(t-rchild,key,t,p); /*在右子樹中繼續(xù)查找*/insertBST(node *t,int key) /*插入函數(shù)*/ node p=NULL,s=NULL; if(!searchBST(*t,key,NULL,&p) /*查找不成功*/ s=(node)malloc(sizeof(BSTnode); s-data=key; s-lchild=s-rchild=NULL; if(!p) *t=s; /*被插結(jié)點(diǎn)*s 為新的根結(jié)點(diǎn)*/ else if(keydata) p-lchild=s;/*被插結(jié)

20、點(diǎn)*s 為左孩子*/ else p-rchild=s; /*被插結(jié)點(diǎn)*s 為右孩子*/ return (1); else return (0);/*樹中已有關(guān)鍵字相同的結(jié)點(diǎn),不再插入*/-24-二叉排序樹的實(shí)現(xiàn) inorderTraverse(node *t) /*中序遍歷函數(shù)*/ if(*t) if(inorderTraverse(&(*t)-lchild) /*中序遍歷根的左子樹*/ printf(%d ,(*t)-data); /*輸出根結(jié)點(diǎn)*/ if(inorderTraverse(&(*t)-rchild); /*中序遍歷根的右子樹*/ return(1) ;node

21、 Delete(node t,int key) /*刪除函數(shù)*/ node p=t,q=NULL,s,f; while(p!=NULL) /*查找要?jiǎng)h除的點(diǎn)*/ if(p-data=key) break; q=p; if(p-datakey) p=p-lchild; else p=p-rchild; if(p=NULL) return t; /*查找失敗*/ if(p-lchild=NULL) /*p 指向當(dāng)前要?jiǎng)h除的結(jié)點(diǎn)*/ if(q=NULL) t=p-rchild; /*q 指向要?jiǎng)h結(jié)點(diǎn)的父母*/ else if(q-lchild=p) q-lchild=p-rchild; /*p 為

22、q 的左孩子*/ else q-rchild=p-rchild;/*p 為 q 的右孩子*/ free(p); else /*p 的左孩子不為空*/ f=p; s=p-lchild; while(s-rchild) /*左拐后向右走到底*/ f=s; s=s-rchild; if(f=p) f-lchild=s-lchild; /*重接 f 的左子樹*/-25-二叉排序樹的實(shí)現(xiàn) else f-rchild=s-lchild; /*重接 f 的右子樹*/ p-data=s-data; free (s); return t;void main() node T=NULL; int num; int

23、 s=0,j=0,i=0; int ch=0; node p=NULL; printf(輸入一串?dāng)?shù),每個(gè)數(shù)以空格分開:); do scanf(%d,&num); if(!num) printf(完成輸入!n); else insertBST(&T,num); while(num); printf(n 1: 中序輸出); printf(n 2: 輸入元素); while(ch=ch) scanf(%d,&ch); switch(ch) case 0: exit(0); /*0退出*/ case 1: printf( 中序遍歷輸出結(jié)果為:n ); inorderTraver

24、se(&T); /*1中序遍歷*/ break; case 2: printf( 輸入元素 x,查找二叉排序樹 T,若存在含 x 的結(jié)點(diǎn),則刪除該結(jié)點(diǎn),并作中序遍歷,否則輸出無 x :); scanf(%d,&num); /*3刪除某個(gè)結(jié)點(diǎn)*/ if(searchBST(T,num,NULL,&p) T=Delete(T,num);-26-二叉排序樹的實(shí)現(xiàn) printf( 刪除成功!中序遍歷輸出:n ); inorderTraverse(&T); else printf( 無%d,num); break; default: printf(無此結(jié)點(diǎn)n); brea

25、k; /*輸入無效字符*/ -27-二叉排序樹的實(shí)現(xiàn)二叉鏈表結(jié)構(gòu)二叉鏈表結(jié)構(gòu) c+#include using namespace std;class nodepublic: node(int i):data(i),left(NULL),right(NULL) void inorder(node *&root) /中序遍歷,符合升序輸出 if(root!=NULL) inorder(root-left); coutdataright); void insert(node *&ptr,int item) /在查找樹中插入元素 if(ptr=NULL) ptr=new node(i

26、tem); else if(itemdata) insert(ptr-left,item); else insert(ptr-right,item); node *find(node *&ptr,int item) /在查找樹中查找元素,找到返回所在結(jié)點(diǎn)指針,找不到返回空指針。 if(ptr=NULL) return NULL; if(ptr-data=item) return ptr; else if(itemdata) find(ptr-left,item); else find(ptr-right,item); node *&findy(node *&ptr,in

27、t item) /在查找樹中查找肯定存在的元素,并返回其引用 if(ptr-data=item) return ptr; else if(itemdata)-28-二叉排序樹的實(shí)現(xiàn) findy(ptr-left,item); else findy(ptr-right,item); node* rl()return left; node* rr()return right; void dele(node *&ptr) /刪除值為 item 所在結(jié)點(diǎn) if(ptr-rl()=NULL&ptr-rr()=NULL) ptr=NULL; else if(ptr-rr()=NULL) p

28、tr=ptr-rl(); else ptr=ptr-rr(); private: int data; node *left; /左孩子結(jié)點(diǎn) node *right; /右孩子結(jié)點(diǎn);int main() int t,i=0,j; coutt; cout輸入tj; node *x=new node(j); for(;ij; x-insert(x,j); coutinorder(x); /作中序遍歷 coutn 輸入操作(當(dāng)輸入-1 時(shí)程序結(jié)束):j; while(j!=-1) node *t=x-find(x,j); /定位結(jié)點(diǎn) if(t!=NULL)-29-二叉排序樹的實(shí)現(xiàn) node *&

29、;y=x-findy(x,j); x-dele(y); coutinorder(x); else cout無j; coutn 輸入操作(當(dāng)輸入-1 時(shí)程序結(jié)束):j; return 0;-30-二叉排序樹的實(shí)現(xiàn)順序存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu) c#includestdio.h#includemalloc.h#includewindows.h#define endflag 999999#define N 1000int bN;typedef struct int data;int other;int flag1;Link;void Build(Link aN)int w,i,j,k; for(i=0;i

30、=N;i+) ai.flag1=0; ai.data=0; printf(nttt 請(qǐng)輸入樹的根結(jié)點(diǎn):);scanf(%d,&a1.data);a1.flag1=1;printf(nttt 請(qǐng)輸入結(jié)點(diǎn)個(gè)數(shù):);scanf(%d,&k);for(j=1;j=k;j+)printf(nttt 請(qǐng)輸入結(jié)點(diǎn)的數(shù)值:);scanf(%d,&w);printf(nttt 第%d 位:%d,j,w);a0.data=w;a0.flag1=1;i=1;if(a0.dataai.data)loop:if(a2*i.flag1=0)-31-二叉排序樹的實(shí)現(xiàn) a2*i.data=a0.dat

31、a;a2*i.flag1=a0.flag1;if(a2*i.flag1=1)i=2*i;if(a0.dataai.data)goto loop1; if(a0.dataai.data) loop1:if(a2*i+1.flag1=0) a2*i+1.data=a0.data;a2*i+1.flag1=a0.flag1;if(a2*i+1.flag1=1)i=2*i+1;if(a0.dataai.data)goto loop1; void Sdel(Link aN)int i;int flag=0;int q;int number=1;int j=1;int bN;printf(nttt 請(qǐng)輸入需要?jiǎng)h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論