




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
遍歷二叉樹和線索二叉TraversingBinary遍TraversingBinary
它是樹結(jié)構(gòu)、刪除、修改、查切運算的基礎(chǔ)和。右”。遍歷規(guī)則二叉樹由根、 、 構(gòu)成,定義為D、L、 若限定先左后右,則有三種實現(xiàn)方案先序遍中序遍后序遍 先序遍中序遍后序遍typedefstructnode{intdata;structnode}node;node*root;LDR(node{if(root}
DLR(node*root{ifroot!=NULL){printf(“%d”,root->data);// DLR(root->lchild);//遞歸遍歷左DLR(root->rchild);//遞歸遍歷右LRD(nodeLRD(node{if(root}先序遍歷
ABABCDD D D DD 先序遍歷序列:ABD ABCAABCAD L LL AABCD中序遍歷序列:B LRDABCLRDABCD L LL AABCD后序遍歷序列: BCABDECDBEACDABDECDBEACDEBCA EABECFDGHK例ABECFDGHKAABCDEFGH中序序列BDBDCAEHGK后序序列DDCBHKGFE++*E*D/CAB
先序遍歷結(jié)+**/ABCD—前綴表示中序遍歷結(jié)A/B*C*D+后序遍歷結(jié)AB/C*D*E—后綴表示層次遍歷結(jié)+*E*D/CA遍歷算法的路徑是相同的,只是結(jié)點的時機不同。 第1次經(jīng)過 第3次經(jīng)過 時間效率:O(n)//每個結(jié)點只 空間效率:O(nDLR(node ifroot!=NULL)//非空二叉樹條件,等效于{if(!root->lchild&&!root->rchild) //遞歸遍歷左,直到葉子處DLR(root->rchild);}//遞歸遍歷右,直到葉子處}return(0);編寫中序遍歷T的非遞歸算法Status while(!StackEmpty(S))while(GetTop(S,p)&&p)Push(S,p->lchild);//向左走到盡頭 if((!StackEmpty(S if(!Visit(p->data))returnERROR;Push(S,p->rchild);}//ifreturnOK;編寫中序遍歷T的非遞歸算法Status while(p||!StackEmpty(S))if(p){Push(S,p);p=p->lchild);}else //根指針退棧,根結(jié)點,遍歷 if(!Visit(p->data))returnERROR;p=p->rchild);}//elsereturnOK;怎樣建樹? 怎樣建樹? 考慮1:輸入結(jié)點時怎樣表示“無孩子A考慮2:以何種遍歷方式來輸入和建樹B字符串輸完后 (如$),因為
ABCDEGFABCDEGF If(ch==’’)if(!(TBiTNode*)malloc(sizeof(BiTNode))))exit(overflow); }return}BDCEAFHGDECBHGFA,請畫出這棵二叉樹。①由后序遍歷特征,根結(jié)點必在后序序列尾部(即②由中序遍歷特征,根結(jié)點必在其中間,而且其左部必全部是左的子孫(即BDCE),其右部必全部是右的③繼而,根據(jù)后序中的DECB可確定B為A的左孩子,已知中序遍歷:BDCEFH已知后序遍歷:DECA
HGF (DC
(FHThreadedBinary線ThreadedBinary討論:用二叉鏈表法(l_child,r_child) 有有n+1個證明:用二叉鏈表包含n個結(jié)點的二叉樹,結(jié)點必2n個鏈域(見二叉鏈表數(shù)據(jù)類型說明)除根結(jié)點外,二叉樹中每一個結(jié)點有且僅有一個雙親,意即每個結(jié)點地址占用了雙親的一個直接后繼,n個結(jié)點地址共占用了n-1個雙親的指針域。也就是說,所以,空指針數(shù)目=2n-(n-1)=n+1個 這就是這就是線索二叉樹(ThreadedBinary例如對某二叉樹的中序遍歷結(jié)果是BDCEAFHG,意味著已 起來,這叫做“線索化①每個結(jié)點增加兩個域:fwd和
若結(jié)點有左,則lchild指向其左孩子;否則,lchild指向其直接前驅(qū)(即線索);若結(jié)點有右,則rchild指向其右孩子;否則,rchild指向其直接后繼(即線索)。
為區(qū)別兩種不同情況,特增加兩個標(biāo)志域各各 線索
線索化過程就是在遍歷過修改空指針的過程將空的rchild改為結(jié)點的直接非空指針呢?仍然指向孩子結(jié)點(稱為“正常情況0011110101GEIDJHCFB0001010111A
Rtag=1 線索二叉樹的生成——線索 線索化過程就是在遍歷修改空指針的過例1:畫出以下二叉樹對應(yīng)的中序解:對該二叉樹中序遍歷的結(jié)果為:HDIB,E,AFC
懸空
對應(yīng)的中序線索二叉樹結(jié)構(gòu)如圖所示注:此圖中序遍歷結(jié)果為:HD,I,B,E,A,FC00000A00A00B00C00B00C00D01E11F11G10D01E11F11G11H11I11H11I1
解:因為中序遍歷序列是:55402560280833對應(yīng)線索樹應(yīng)當(dāng)按此規(guī)律連線,即線索二叉樹的生成算法(遞歸算法見P134-135)目的:在遍歷二叉樹的過修改空指針,添加前驅(qū)或后繼為了記下遍歷過結(jié)點的先后次序,需要設(shè)置兩個指針以中序遍歷建立中序線索化鏈表算StatusInOrderThreading(BiThrTree&Thrt,BiThrTreeT)//中序遍歷二叉樹T,并將其中序線索化,Thrtif(!(Thrt=(BiThrTree)malloc(sizeof(BiThrNode))))exit(overflow) if(!T)Thrt- else pre->rchild=Thrt;pre->RTag=Thread;Thrt->rchild=pre;}return編寫中序遍歷T的非遞歸算法VoidInThreading(BiThrTreeP){if(P){ //左線索if(!p->lchild){p->LTag=Thread;p-if(!pre->rchild){pre->RTag=Thread;pre-pre=p //右線索} (因為建立線索時已遍歷一次,相當(dāng)于線性化了難點:索化二叉樹中,并不是每個結(jié)點都能直 最左下方的結(jié)點請注意中序遍歷規(guī)則是LDR,先左再根再附:中序線索二叉樹遍歷步驟(算法
先尋找中序遍歷之首結(jié)點(即最左下角結(jié)點),方法是:(無左孩子,已到最左下角);首先p-p->data;并重復(fù)4)當(dāng)RTag=0時(表示有右孩子),此時應(yīng)當(dāng)從該結(jié)點的右孩算法流程
p=T-p=T- N Y
returnreturnp->RTag==1&&p-Y
以雙向線索鏈表對二叉樹遍歷T的算Status emTypee)) while(p=T) //空樹或遍歷結(jié)束時,pif(!Visit(p->data))returnERROR;//其左為空的結(jié) Visit(p->data); //后繼結(jié)p=p->rchild);}
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 8 冀中的地道戰(zhàn) 第二課時(教學(xué)設(shè)計)-2024-2025學(xué)年統(tǒng)編版語文五年級上冊
- 17《記金華的雙龍洞》 教學(xué)設(shè)計-2023-2024學(xué)年四年級下冊語文統(tǒng)編版
- 2024-2025學(xué)年高中生物 第一章 孟德爾定律 第一節(jié) 分離定律教學(xué)設(shè)計1 浙科版必修2
- 設(shè)備點檢管理培訓(xùn)生產(chǎn)篇
- 2024秋七年級數(shù)學(xué)上冊 第一章 有理數(shù)1.6 有理數(shù)的減法教學(xué)設(shè)計(新版)冀教版
- Module 4 Life in the future Unit 1 Everyone will study at home 教學(xué)設(shè)計-2023-2024學(xué)年外研版英語七年級下冊
- Unit 1 This is me!assessment教學(xué)設(shè)計2024-2025學(xué)年譯林版七年級上冊英語
- 美國學(xué)前教育
- 行業(yè)分析用顏色的重要性
- 《木工藝-鋸床的使用》(教學(xué)設(shè)計)-六年級上冊勞動
- 手術(shù)分級目錄(2023年修訂)
- 生化武器課件教學(xué)課件
- 演講比賽評分表和計分表
- 2024年涉密人員考試試題庫保密基本知識試題及答案解析
- 院內(nèi)突發(fā)心跳呼吸驟停、昏迷、跌倒事件應(yīng)急預(yù)案及程序
- 北京聯(lián)合大學(xué)2021年招聘輔導(dǎo)員試題及答案
- 2024年拍賣師資格考試題庫大全(含答案)
- 【正版授權(quán)】 ISO 21940-11:2016/Amd 1:2022 EN Mechanical vibration - Rotor balancing - Part 11: Procedures and tolerances for rotors with rigid behaviour - Amendment 1
- 發(fā)展?jié)h語中級閱讀試題
- 電力配網(wǎng)工程各種材料重量表總
- 2024年國家級望城經(jīng)濟技術(shù)開發(fā)區(qū)人才招聘31人歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
評論
0/150
提交評論