版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、7.4二叉樹掃描定義7.4.1二叉樹掃描所謂的二叉樹掃描是指對二叉樹中的各節(jié)點按一定的順序只進行一次網(wǎng)站數(shù)據(jù)庫、并只進行一次網(wǎng)站數(shù)據(jù)庫。 根據(jù)根結(jié)點的網(wǎng)站數(shù)據(jù)庫位置,通常將二叉樹的掃描分類為TLR (根左右)、TRL (根左右)、LTR (左根右)、RTL (右根左)、LRT (左右根)、RLT (左右根)這6種的正下方的3個順序TLR、LTR、LRT取決于根網(wǎng)站數(shù)據(jù)庫的位置(1)二叉樹的前向掃描首先網(wǎng)站數(shù)據(jù)庫在根結(jié)點上,然后按順序網(wǎng)站數(shù)據(jù)庫在根結(jié)點的左子樹上。在根結(jié)點的右子樹上,按前向掃描的順序進行網(wǎng)站數(shù)據(jù)庫。 (2)二叉樹的中順掃描,首先按中順掃描的順序網(wǎng)站數(shù)據(jù)庫在根結(jié)點的左子樹中網(wǎng)站數(shù)據(jù)
2、庫的根結(jié)點上,最后按中順掃描的順序網(wǎng)站數(shù)據(jù)庫在根結(jié)點的右子樹中。 (3)二叉樹的后序掃描,首先按后序掃描的順序網(wǎng)站數(shù)據(jù)庫在根結(jié)點的左子樹上,然后按以下順序老虎吧在根結(jié)點的右子樹上的順序網(wǎng)站數(shù)據(jù)庫,最后網(wǎng)站數(shù)據(jù)庫在根結(jié)點上。 a、b、d、f、e、g、c、前掃描: abdefgc中依次掃描: debgfac后掃描: edgfbca,練習(xí)! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 前置序列: ABDGCEFH中序列: DGBAECHF后置序列: GDBEHFCA,練習(xí)! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! 亞麻跌! (1)在一個二叉樹中順序掃描二
3、叉樹時,如果以左子樹的所有節(jié)點都在根結(jié)點的左側(cè),右子樹的所有節(jié)點都在根的右側(cè)的形式描繪,則在各個節(jié)點上畫垂直線,由此得到的順序是該二叉樹的中順序掃描序列對二叉樹進行遞歸的一次掃描,如圖5-16、7.4.2所示,其中包括二叉樹的遞推算法卷預(yù)編碼(if )打印(% c、t-data ); preorder(t-lchild ); 預(yù)先登錄(t-rchild );用于掃描二叉樹的遞歸算法、用于按升序掃描二叉樹的遞歸算法void in order (比特) if (t ) in order (t-lchild ); 打印(“% c”、t-data ); 正規(guī)(t-rchild ); 3 .二叉樹的遞推
4、算法卷后處理器if (t )后處理器(t-lchild ); postorder(t-rchild ); 打印機(% c,t-data ); 4、二叉樹創(chuàng)建算法可以利用二叉樹前向掃描的結(jié)果來非常方便地創(chuàng)建所給定的二叉樹。 具體而言,將最初輸入的節(jié)點作為二叉樹的根結(jié)點,接著輸入的節(jié)點序列是二叉樹的左子樹的前向掃描的結(jié)果,由它們創(chuàng)建二叉樹的左子樹,再接著輸入的節(jié)點序列是在二叉樹的右子樹前向掃描的結(jié)果,由它們應(yīng)生成二叉樹的右子樹,另一方面, 根據(jù)對二叉樹左子樹的前向掃描的結(jié)果,根據(jù)對二叉樹的左子樹和對二叉樹的右子樹的前向掃描的結(jié)果,生成二叉樹的右子樹的過程與根據(jù)對整個二叉樹的前向掃描的結(jié)果,生成二叉
5、樹的過程完全相同,但是,由于處理的對象范圍不同,因此,能夠以完全遞歸的方式實現(xiàn)。voidcreatebintree (bintree * t )卡片; if (ch=getchar ()=) * t=空值。 else * t=(賓節(jié)點* ) malloc (尺寸(賓節(jié)點) )。 生成二叉樹的根結(jié)點*/(* t ) -數(shù)據(jù)=ch; createbintree(/*遞歸實現(xiàn)右子樹的建構(gòu)*/、7.4.3二叉樹掃描的非遞歸實現(xiàn),在第5章介紹了從遞歸計程儀柱到非遞歸計程儀柱的變換這兩種方法:簡單遞歸計程儀柱的變換和復(fù)雜遞歸計程儀柱的變換二叉樹的掃描問題應(yīng)該屬于后者,不要1個順控棧內(nèi)存的定義及其部分操作的
6、實現(xiàn)如下所示。 堆棧類型/*棧內(nèi)存結(jié)構(gòu)定義* /比特數(shù)據(jù)100; 英特爾標(biāo)簽100; /為棧內(nèi)存中的每個元素設(shè)置的標(biāo)記。 用于以后對int top進行老虎吧。 /指棧內(nèi)存掌門人指針、棧內(nèi)存掌門人元素,這是與第2章的top有區(qū)別的seqstack; 語音推送/棧內(nèi)存定*/s -數(shù)據(jù)頂點=t。 入口點(seqstack * s )/*棧內(nèi)存* /入口點(s-top )!=-1) s-top-; 返回(s-datas-top1) :退回空值; 1、二叉樹前序掃描的非遞歸實現(xiàn),前序掃描1條非空二叉樹t的情況下,網(wǎng)站數(shù)據(jù)庫t的根結(jié)點后,應(yīng)進入t的左子樹,但此時,必須保存t,網(wǎng)站數(shù)據(jù)庫該左子樹后,通過t的
7、RCHILD進入其右子樹的網(wǎng)站數(shù)據(jù)庫,即設(shè)置追溯到t的點仔細(xì)觀察會發(fā)現(xiàn),這些個的閃光點需要使用棧內(nèi)存進行管理。 在二叉樹前掃描的過程中,計程儀程序要做的工作通常分為兩個部分:保存在當(dāng)前處理中的樹(子樹)和棧內(nèi)存中要處理的部分,這兩個部分的工作全部完成后,程序計程儀程序就可以結(jié)束。實現(xiàn)非遞歸的二叉樹前向掃描,實現(xiàn)void preorder1(bintree t) /*非遞歸的二叉樹前向掃描*/seqstack s。 s .頂端=-1; (t )| (s.top!=-1) /*如果先前處理的子樹不為空或棧內(nèi)存不為空,則循環(huán)*/while (t) printf(%c,t-data ); 頂端; s.
8、datas.top=t; t=t -液晶; if (s.top-1) t=pop (,2,在二叉樹中順序掃描的非遞歸的實現(xiàn),在中順序掃描1根非空樹t時,首先應(yīng)該網(wǎng)站數(shù)據(jù)庫t的左部分樹,這時t的根結(jié)點和右部分樹還沒有網(wǎng)站數(shù)據(jù)庫,所以必須保存t,放入棧內(nèi)存的t 在二叉樹中依次掃描的過程中,程序計程儀要做的工作通常分為兩個部分:保存在當(dāng)前處理中的樹(子樹)和棧內(nèi)存中要處理的部分,等這兩個部分的工作全部完成后,程序計程儀才能完成。 第1卷(入口序列) seqstack s。 s .頂端=-1; 威爾!=NULL) | (s.top!=-1) while (t) push (,3,二叉樹的后序掃描的非遞
9、歸實現(xiàn),在后序掃描1棵非空樹t的情況下,首先應(yīng)該進入t的左子樹訪問,此時t的右子樹和根結(jié)點還沒有訪問,所以必須能夠?qū)保存在棧內(nèi)存中,網(wǎng)站數(shù)據(jù)庫到其左樹這是因為當(dāng)元素位于棧內(nèi)存的最上部時,該左眼子樹的網(wǎng)站數(shù)據(jù)庫必然完成,如果右眼子樹尚未老虎吧,則應(yīng)接著進入右眼子樹的網(wǎng)站數(shù)據(jù)庫,此時,該棧內(nèi)存的最上部的元素還沒有被網(wǎng)站數(shù)據(jù)庫。 直到右側(cè)子樹的網(wǎng)站數(shù)據(jù)庫完成,才棧內(nèi)存棧內(nèi)存的頂部元素,不打印根結(jié)點值。 因此,如果元素位于棧內(nèi)存的頂部,則必須標(biāo)識其右側(cè)子樹是否正在網(wǎng)站數(shù)據(jù)庫。的雙曲馀弦值。 使用seqstack類型的數(shù)組tag標(biāo)識棧內(nèi)存中每個元素的狀態(tài)。 (1)如果tag的值為0,則由于右側(cè)的子樹還
10、沒有被網(wǎng)站數(shù)據(jù)庫,所以該右側(cè)的子樹作為當(dāng)前正在處理的對象,該棧內(nèi)存的最上面的元素保留在棧內(nèi)存中, 將tag的值變更為1 (2),如果該tag值為1,則表示該右眼用子樹被網(wǎng)站數(shù)據(jù)庫,接著應(yīng)網(wǎng)站數(shù)據(jù)庫至該根結(jié)點進行棧內(nèi)存。 的雙曲馀弦值。 在從整個二叉樹的后面開始依次掃描的過程中,plump計程儀程序所進行的作業(yè)始終分為兩個部分。 現(xiàn)在處理中的樹(子樹)和棧內(nèi)存中保存的應(yīng)處理的部分。 在兩個部分的工作完成之前,不能結(jié)束進程。 void postorder1(比特)序列。 s .頂端=-1; (t )| (s.top! 中文:=-1) while (t) s.top。 s.datas.top=t;
11、s.tags.top=0; t=t -液晶;while (s.top-1 )、75二叉樹的其他運算的實現(xiàn)是遞歸的,因為二叉樹本身的定義是遞歸的,所以二叉樹上的許多問題和運算遞歸地非常簡單和自然。 一、二叉樹的搜索位置(t,x )目錄位置(目錄t,數(shù)據(jù)x )目錄p; if (t=空)返回空。 返回的時間(t-data=x )。 位置關(guān)系(t-lchild,x ):if (p )返回p; else return locate(t-rchild,x ) :兩個統(tǒng)一校正二叉樹下的結(jié)點的個數(shù)numofnode (t ) intnumofnode (bintreet ) if (t=null ) retu
12、rn 0; 電子返回(正弦(t-lchild )正弦(t-rchild )1)。 3 .對二叉樹是否為等效is等效(t 1,t2) is等效(比特t 1,比特t2)比特進行判斷。 t=0; 求出if (t1=NULL,4 )、二叉樹的高度(深度)度depth (t ) int depth (比特) int h、lh、rh。 if (t=空) h=0。 深度=深度(t-lchild ) :深度=深度(t-rchild ):if (LH=RH ) h=LH 1。 else h=rh 1; 返回h;7.6穿線二叉樹、7.6.1穿線二叉樹的定義根據(jù)所謂的穿線二叉樹,即一般二叉樹,對每個接合點進行考察。
13、 如果左側(cè)子樹不為空,則左側(cè)指針保持不變,仍指向左側(cè)小盆友。如果左側(cè)子樹為空,則在掃描順序中,如果將左側(cè)指針指向該節(jié)點的前驅(qū)物的右側(cè)子樹不為空,則右側(cè)指針保持不變,仍指向右側(cè)小盆友如果規(guī)定的掃描順序為前順序,被稱為前順序穿過二叉樹的規(guī)定的掃描順序為中順序,將被稱為中順序穿過二叉樹的掃描順序規(guī)定為后順序,則被稱為后順序穿過二叉樹。 本節(jié)主要介紹中序穿紗二叉樹。 將ltag和rtag兩個標(biāo)志二進制位添加到穿線二叉樹的每個節(jié)點。 ltag=0表示節(jié)點的左指針指向其左子項,ltag=1表示節(jié)點的左指針指向按順序掃描其中的前驅(qū)物,rtag=0表示節(jié)點的右指針指向其右子項,rtag=1表示節(jié)點的右指針指向
14、其右子項各節(jié)點的構(gòu)造如下: (a )穿過二叉樹節(jié)點的構(gòu)造,(a )在一根二叉樹(b )中依次穿過二叉樹的構(gòu)造,(b )圖中實線表示指針,(折斷線表示線索。7.6.2中序貫二叉樹的基本運算、ADT binthrtree數(shù)據(jù)對象d :由具有相同性質(zhì)的數(shù)據(jù)元素構(gòu)成的有限集合數(shù)據(jù)關(guān)系r:d為空,或者d中僅包含一個元素時,r為空;否則,d中稱為根結(jié)點的特殊節(jié)點root 沒有氟里昂驅(qū)動器其他節(jié)點分為相互不交叉的兩個集合,分別構(gòu)成root的左側(cè)子樹l和右側(cè)子樹r。 如果l和r不是空,由于左眼子樹l和右眼子樹r也二叉樹,分別稱為二叉樹的根結(jié)點root的后繼節(jié)點,因此它們中的數(shù)據(jù)元素之間也同樣滿足上述的關(guān)系。 如果二叉樹的任意節(jié)點(例如,其左側(cè)子樹不是空的),則該lchild指向該左側(cè)子樹,否則,如果所指向的那個右子樹指向其中的順序掃描順序的下一前驅(qū)節(jié)點,則該rchild指向該右子樹基本關(guān)操作字集為:(1)創(chuàng)建(p ) (2)注冊(p ) (3)定位(p,x ) (4)信息節(jié)點(p ) (5)注冊(p ) (6)注冊(p ) (7) (12 ) prethrtree (p ) (13 ) postthrtree (p ) adtbinthrtree,7.7類型基礎(chǔ)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合理的施工方案(3篇)
- 相親新穎活動策劃方案(3篇)
- 折除施工方案(3篇)
- 施工現(xiàn)場施工資料歸檔制度
- 教職工專業(yè)技術(shù)培訓(xùn)制度
- 罕見腫瘤的基因治療臨床試驗進展
- 罕見間質(zhì)性肺病的抗纖維化治療策略
- 2026河北石家莊市規(guī)劃館招聘派遣制人員3人備考題庫及一套完整答案詳解
- 2026四川中煙工業(yè)有限責(zé)任公司員工招聘141人備考題庫及完整答案詳解
- 罕見腫瘤的個體化治療治療策略優(yōu)化經(jīng)驗與臨床實踐
- 2026屆杭州高級中學(xué)高二上數(shù)學(xué)期末聯(lián)考試題含解析
- 2026年及未來5年中國無取向硅鋼片行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報告
- 棄土場規(guī)范規(guī)章制度
- 2026年水下機器人勘探報告及未來五至十年深海資源報告
- 安徽省蕪湖市鳩江區(qū)2024-2025學(xué)年高一上學(xué)期期末考試生物試卷
- 2025年對中國汽車行業(yè)深度變革的觀察與思考報告
- 雙重預(yù)防體系建設(shè)自評報告模板
- 福建省泉州市晉江市2024-2025學(xué)年八年級上學(xué)期1月期末考試英語試題(含答案無聽力音頻及原文)
- 心血管疾病風(fēng)險評估
- 慢性肝病患者營養(yǎng)支持護理培訓(xùn)
- 2025年云服務(wù)器采購合同協(xié)議
評論
0/150
提交評論