第六章 樹(shù)二叉樹(shù)_第1頁(yè)
第六章 樹(shù)二叉樹(shù)_第2頁(yè)
第六章 樹(shù)二叉樹(shù)_第3頁(yè)
第六章 樹(shù)二叉樹(shù)_第4頁(yè)
第六章 樹(shù)二叉樹(shù)_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章樹(shù)和二叉樹(shù)一、樹(shù)的基本概念二、二叉樹(shù)、遍歷、線索化三、樹(shù)和森林四、哈夫曼樹(shù)【教學(xué)目的】掌握樹(shù)的基本概念,二叉樹(shù)的基本概念,二叉樹(shù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)以及二叉樹(shù)的操作的實(shí)現(xiàn);掌握二叉樹(shù)與樹(shù)和森林的轉(zhuǎn)換,進(jìn)而掌握樹(shù)和森林的存儲(chǔ)結(jié)構(gòu),利用二叉樹(shù)解決Huffman編碼的應(yīng)用【教學(xué)重點(diǎn)】二叉樹(shù)的概念、二叉樹(shù)的遞歸與非遞歸遍歷算法、線索化、二叉樹(shù)與樹(shù)、森林的轉(zhuǎn)換,Huffman樹(shù)及Huffman編碼【教學(xué)難點(diǎn)】二叉樹(shù)的非遞歸遍歷及線索化6.1樹(shù)的基本概念一、樹(shù)的定義及表示1定義樹(shù):n(n≥0)個(gè)數(shù)據(jù)元素(結(jié)點(diǎn))的有限集合。當(dāng)n=0,則稱為空樹(shù);當(dāng)n>0,滿足:(1)樹(shù)中有且僅有一個(gè)特定的數(shù)據(jù)元素被稱為根結(jié)點(diǎn)。(2)當(dāng)n>1時(shí),其余數(shù)據(jù)元素被分成m(m>0)個(gè)互不相交的子集T1,T2,...,Tm,每個(gè)子集又是一棵樹(shù),稱為根結(jié)點(diǎn)的一顆子樹(shù)。樹(shù)的幾種形態(tài)樹(shù)的特點(diǎn)(邏輯結(jié)構(gòu))(1)樹(shù)的根結(jié)點(diǎn)沒(méi)有前驅(qū)結(jié)點(diǎn),除根結(jié)點(diǎn)之外的所有結(jié)點(diǎn)有且只有一個(gè)前驅(qū)結(jié)點(diǎn)(2)樹(shù)中所有結(jié)點(diǎn)可以有零個(gè)或多個(gè)后繼結(jié)點(diǎn)①②③2樹(shù)的表示方法直觀表示法嵌套集合表示法凹入表示法//不清晰廣義表表示法④二、基本術(shù)語(yǔ)結(jié)點(diǎn):數(shù)據(jù)元素(的內(nèi)容及其指向其子樹(shù)根的分支統(tǒng))稱為結(jié)點(diǎn)結(jié)點(diǎn)的度:結(jié)點(diǎn)的子樹(shù)(分支)數(shù)。終端結(jié)點(diǎn)(葉子):度為0的結(jié)點(diǎn)。非終端(分支)結(jié)點(diǎn):度不為0的結(jié)點(diǎn)。結(jié)點(diǎn)的層次:樹(shù)中根結(jié)點(diǎn)的層次為1,根結(jié)點(diǎn)子樹(shù)的根為第2層,以此類推。樹(shù)的度:樹(shù)中所有結(jié)點(diǎn)度的最大值。樹(shù)的深度:樹(shù)中所有結(jié)點(diǎn)層次的最大值。有序樹(shù)、無(wú)序樹(shù):如果樹(shù)中每棵子樹(shù)從左向右的排列擁有一定的順序,不得互換,則稱為有序樹(shù),否則稱為無(wú)序樹(shù)。森林:是m(m≥0)棵互不相交的樹(shù)的集合。孩子、雙親:結(jié)點(diǎn)子樹(shù)的根稱為這個(gè)結(jié)點(diǎn)的孩子,而這個(gè)結(jié)點(diǎn)又被稱為孩子的雙親。子孫:以某結(jié)點(diǎn)為根的子樹(shù)中的所有結(jié)點(diǎn)都被稱為是該結(jié)點(diǎn)的子孫。祖先:從根結(jié)點(diǎn)到該結(jié)點(diǎn)路徑上的所有結(jié)點(diǎn)。兄弟:同一個(gè)雙親的孩子之間互為兄弟。堂兄弟:雙親在同一層的結(jié)點(diǎn)互為堂兄弟。6.2二叉樹(shù)定義二叉樹(shù):n(n≥0)個(gè)結(jié)點(diǎn)的有限集合。當(dāng)n=0時(shí),稱為空二叉樹(shù);當(dāng)n>0時(shí),有且僅有一個(gè)結(jié)點(diǎn)為二叉樹(shù)的根,其余結(jié)點(diǎn)被分成兩個(gè)互不相交的子集,一個(gè)稱為左子集(樹(shù)),另一個(gè)稱為右子集(樹(shù)),每個(gè)子集(樹(shù))又是一個(gè)二叉樹(shù)。二叉樹(shù)的基本形態(tài)二叉端樹(shù)的日性質(zhì)在二莫叉樹(shù)雁的第i層上灶最多區(qū)有2i-魔1個(gè)結(jié)晝點(diǎn)(i≥而1)深度言為K的二勒叉樹(shù)額最多巴有2K-1個(gè)結(jié)英點(diǎn)(K≥搶1)(皮稱為貓滿二乘叉樹(shù)饒)對(duì)于攀任意輝一棵淹二叉媽樹(shù),匙如果邪度為0的結(jié)毫點(diǎn)個(gè)棋數(shù)為n0,度眾為2的結(jié)節(jié)點(diǎn)個(gè)診數(shù)為n2,則n0=n2+1二叉熊樹(shù)的拳總度旱數(shù)=n1+2盲n2二叉以樹(shù)的恨節(jié)點(diǎn)臟數(shù)=n0+n1+n2二叉紀(jì)樹(shù)的竊總度喚數(shù)=釣二叉拾樹(shù)的贊節(jié)點(diǎn)糟數(shù)-1n1當(dāng)+2暢n2=n0+n1+n2-1即:n0備=n唱2+出11234675具有n個(gè)結(jié)鵲點(diǎn)的單完全豪二叉餅樹(shù)的臘深度爸為lo致g2n+1完全電二叉摧樹(shù):n個(gè)結(jié)騙點(diǎn)的游二叉高樹(shù),先若將座它與殼一棵睬同深善度的壘滿二們叉樹(shù)晝中的服所有換結(jié)點(diǎn)章按從雕上到右下,雁從左梨到右敗的順饞序分起別進(jìn)斯行編結(jié)號(hào),乞且該井二叉鼠樹(shù)中覽的每燥個(gè)結(jié)窗點(diǎn)分藥別與刪滿二示叉樹(shù)杜中編勢(shì)號(hào)為1~n的結(jié)量點(diǎn)位紐奉置一編一對(duì)傅應(yīng),砍則稱瓶這棵揭二叉內(nèi)樹(shù)為佛完全崗二叉彩樹(shù)證明械:假設(shè)猛具有n個(gè)結(jié)戲點(diǎn)的櫻完全社二叉案樹(shù)的誘深度栗為K,則屈根據(jù)舌性質(zhì)2可以閘得出爸:2K-傭1-1尖<n≤殿2K-1將不換等式哀兩端但加1得到歌:2K-塑1≤n菊<2K取以2為底鴨的對(duì)滿數(shù),炊化簡(jiǎn)劈燕:K-渠1≤鏈lo匙g2n<完K得到狀:lo吧g2n=K暗-1。培整泊理:K=lo貧g2n+1完全短二叉遠(yuǎn)樹(shù):一棵嫩二叉議樹(shù)至野多只研有最哀下面隨兩層匪結(jié)點(diǎn)禽的度劣可小從于2,且隸最下?tīng)€面一漆層上拒的結(jié)乞點(diǎn)都僑集中屋在該折層最樣左邊捷的若沈干位跡置對(duì)于演有n個(gè)結(jié)決點(diǎn)的店完全叢二叉征樹(shù)中位的所學(xué)有結(jié)粘點(diǎn)按威從上智到下幟,從祝左到端右的兄順序聚進(jìn)行岔編號(hào)揀,則惑對(duì)任顛意一室個(gè)結(jié)峽點(diǎn)i(1≤俱i≤姜n),璃有:如果i=牛1,則填結(jié)點(diǎn)i是這近棵完忽全二承叉樹(shù)傅的根科,沒(méi)早有雙形親;極否則律其雙嘗親結(jié)真點(diǎn)的夕編號(hào)醒為i/秧2。如果2i錢>n,則具結(jié)點(diǎn)i沒(méi)有鏡左孩組子;焰否則反其左輕孩子輪結(jié)點(diǎn)濁的編心號(hào)為2i。如果2i該+1散>n,則活結(jié)點(diǎn)i沒(méi)有義右孩鋼子;陸否則握其右?guī)藕⒆又Y(jié)點(diǎn)也的編潔號(hào)為2i農(nóng)+1。二叉朽樹(shù)的缺操作Cr常ea錄te映Bi表Tr價(jià)ee循(T,劣de騾f(xié)i間ni關(guān)ti棕on角);以de患fi速ni揀ti暑on給出歲二叉規(guī)樹(shù)T的定匙義創(chuàng)盜建一龍棵二巖叉樹(shù)De斬st姐ro察yB濱iT檔re副e(霜T);銷毀摩二叉健樹(shù)T。Cl蹄ea察rB茅iT癢re驅(qū)e(集&T);將二卡叉樹(shù)T清為瘦空樹(shù)舞。Pa織re蔥nt巨(T,狗e)誰(shuí);求e結(jié)點(diǎn)帖的雙羅親結(jié)吹點(diǎn),者若e是T的非她根結(jié)雅點(diǎn),壓則返裁回它碰的雙嫁親,湖否則堵返回“空”。Le冊(cè)ft赤Ch線il酒d(孔T,鑰e)旺;求結(jié)場(chǎng)點(diǎn)e的左丹孩子熱,若e無(wú)左村孩子然,則懶返回"空"。Ri窗gh蛾tC獅hi跳ld達(dá)(T,盤e)早;求結(jié)精點(diǎn)e的右投孩子牢,若e無(wú)左物孩子枕,則賴返回"空"。二叉伏樹(shù)的汗操作Le寬ft幣Si掙bl球in礎(chǔ)g(傍T,罵e)膚;求結(jié)嚇點(diǎn)e的左西兄弟搜。若e是其哨雙親弊的左總孩子您或無(wú)雄左兄切弟,箱則返歐回"空"。Ri難gh安tS調(diào)ib撐li牌ng師(T,倘e)謊;求e的右藏兄弟吵。若e是其買雙親持的右著孩子禾或無(wú)橫右兄撒弟,危則返饑回“空”。In曾se替rt競(jìng)Ch脈il火d(吸&T,丟p,籮L牌R,膠c遲);根據(jù)LR為0或1,插銜入c為T中p所指豆結(jié)點(diǎn)妙的左瘋或右地子樹(shù)貌。p所指眨結(jié)點(diǎn)搶原有超左或態(tài)右子久樹(shù)成樹(shù)為c的右申子樹(shù)殘。De飛le洲te爭(zhēng)Ch孕il嘗d(亮&T,民p,搖L稻R)釀;根據(jù)LR為0或1,刪筐除T中p所指錄結(jié)點(diǎn)倚的左釀或右緒子樹(shù)如。其他列衍生市操作二叉差樹(shù)的防操作Pr監(jiān)eO游rd燈er尺Tr愉av將er鞭se句(T,貪vi搭si戚t(寬))巷;先序輕遍歷T,對(duì)妄每個(gè)汪結(jié)點(diǎn)險(xiǎn)調(diào)用貢函數(shù)vi前si注t。In遍Or軍de擦rT蒼ra需ve面rs證e(配T,vs擾it()趟);中序夸遍歷T,對(duì)胖每個(gè)泳結(jié)點(diǎn)杜調(diào)用葬函數(shù)Vi繭si臟t。Po鋸st且Or村de蠟rT行ra戴ve錘rs贈(zèng)e(控T,吃vi伙si芽t(軌))買;后序密遍歷T,對(duì)執(zhí)每個(gè)慕結(jié)點(diǎn)婆調(diào)用另函數(shù)vi暖si酸t(yī)。Le普ve揪lO郊rd掛er伸Tr羅av妙er兩se松(T,寨vi丙si苗t(倍))損;層序跟遍歷T,對(duì)箱每個(gè)臣結(jié)點(diǎn)什調(diào)用枯函數(shù)vi袍si溪t。三籠二叉喜樹(shù)的尖存儲(chǔ)皮結(jié)構(gòu)1順序儲(chǔ)存儲(chǔ)回憶亦性質(zhì)吉⑤,甲完全侄二叉姥樹(shù)二叉離樹(shù)的哭順序壟存儲(chǔ)紙定義#d折ef掛in兼eMa頓xT步re優(yōu)eN堆od纖eN陳um10夢(mèng)0ty悄pe白de殃fst炊ru禾ct{Da倦ta咱Ty惜peda真ta嬌[M絕ax掩Tr著ee抹No積de深Nu哥m];/*根存挖儲(chǔ)在六下標(biāo)區(qū)為1的數(shù)館組單裁元中靈*/in腹tn;包/*當(dāng)前親完全右二叉巖樹(shù)的善結(jié)點(diǎn)役個(gè)數(shù)倘*/}QB耐Tr呢ee;二叉濁樹(shù)是胸完全逮二叉蛋樹(shù)時(shí)活,沒(méi)量有問(wèn)圍題。綁但是北如果剝是非彼完全基二叉菊樹(shù)怎前么辦劈燕?方法沾:將播非完找全二界叉樹(shù)揀以特沃殊值跳填充義成完惜全二券叉樹(shù)賄形式辦。新的艦問(wèn)題磁:若灰為完炒全二帆叉樹(shù)螞,空筐間利雹用率永高、億尋找員孩子兩和雙牢親比驕較容唐易。險(xiǎn)若不筋是完弊全二榨叉樹(shù)銹,造主成空小間利刮用率賢的下重降。2二叉影樹(shù)的功鏈?zhǔn)铰?lián)存儲(chǔ)由于夕二叉抹樹(shù)最沉多只鎖有兩撥顆子尼樹(shù),凍因此罪可以刑采用技二叉捆鏈表眼形式誰(shuí)存儲(chǔ)進(jìn)。Lc這hi均ld和Rc凱hi擺ld是分谷別指容向該當(dāng)結(jié)點(diǎn)斷左孩初子和浸右孩秒子的微指針二叉險(xiǎn)樹(shù)的雙鏈?zhǔn)綋未鎯?chǔ)戶定義ty汗pe聞de辣fst可ru捉ctbn六od西e{Da歐ta墨Ty扁peda鬼ta換;st翅ru碌ctbn掠od閉e*lc壩hi椒ld,留*rc盛hi猴ld;}Bn租od德e,*BT冬re掌e;二叉承樹(shù)的價(jià)鏈?zhǔn)綘看鎯?chǔ)壤結(jié)構(gòu)躬類似媽線性紐奉表的島雙向授鏈表慨存在鄉(xiāng)豐兩個(gè)勉指針追,分呆別指勁向其口左右捧子樹(shù)致,而眾非雙匙向鏈扶表的莫前驅(qū)炊和后鋸繼。鏈?zhǔn)綍x結(jié)構(gòu)萄可以仍根據(jù)妖二叉坊樹(shù)的妄結(jié)點(diǎn)繞數(shù)來(lái)獄動(dòng)態(tài)醒分配錢存儲(chǔ)撐空間睛,解買決了著順序樸存儲(chǔ)增結(jié)構(gòu)息的問(wèn)訊題,領(lǐng)因此井常用鼓的二員叉樹(shù)丈采用肥二叉球鏈表拿的形有式比壤較多們。根據(jù)攜操作震的不妥同可態(tài)以對(duì)乳二叉湊樹(shù)進(jìn)陜行改開(kāi)進(jìn),集如:核考慮紙求雙尖親(板前驅(qū)?。┎倌棺鲿r(shí)蹲可以跑采用充什么逆形式秤?遍歷定義競(jìng):按怖照一除定規(guī)匆則訪店問(wèn)二趁叉樹(shù)鞋的所旨有節(jié)格點(diǎn)一級(jí)次。根據(jù)碑根結(jié)翻點(diǎn)和俗左右若子樹(shù)炒訪問(wèn)暢的先顫后不款同,疾有四孩類七慰種遍槽歷操夕作。先序壞遍歷冊(cè):TL盼R或者TR芽L中序溜遍歷皇:LT接R或者RT萄L后序熊遍歷托:LR熟T或者RL標(biāo)T層次鄭遍歷屠:從餓上到促下,從左幻玉到右依次長(zhǎng)訪問(wèn)川結(jié)點(diǎn)6.洗3二叉柿樹(shù)的衰遍歷先序旅遍歷謹(jǐn):ABDGCEFH先序害序列輔:AB漲DG萬(wàn)CE曉FH中序妨遍歷閥:DGBAECHF中序序列逮:DG植BA魂EC贊HF后序向遍歷善:GDBEHFCA后序序列果:GD姨BE彈HF氣CA層次將遍歷洋:ABCDEFGH層次叫序列塌:GD終BE由HF帳CA1二叉秋樹(shù)的廉先序賠遍歷算法航思想鉗:判剃斷二紛叉樹(shù)其是否嚴(yán)為空項(xiàng)?若為漂空,土則結(jié)沾束遍鎮(zhèn)歷;甜否則般先訪之問(wèn)根從;再先鬧序遍諸歷根朱的左塑子樹(shù)爐;最后舍先序訂遍歷冶根的雞右子惰樹(shù)vo腔idPr城eO高rd苗er(BT映re仁et黎){}if哈(鏡t仔){筑vi待si桐t盟(t叨->良da悲ta都);下/赤*訪問(wèn)息結(jié)點(diǎn)園內(nèi)容件*/Pr蠶eO根rd醉er(欠t-皺>lc恒hi球ld);聰/*遍歷績(jī)左子棒樹(shù)寨*/Pr知eO臣rd光er(漂t-券>rc峰hi筆ld);溉/*遍歷訊右子縣樹(shù)王*/}2二叉產(chǎn)樹(shù)的孕中序彩遍歷算法雄思想雁:判燃斷二秩叉樹(shù)軟是否腎為空們?若為蜓空,叛則結(jié)檢束遍捧歷;否則們先中愁序遍倒歷根攔的左魄子樹(shù)惑;再訪獵問(wèn)根枕;最嫩后中切序遍燃?xì)v根沸的右妹子樹(shù)vo姿idIn避Or把de圈r(BT濱re烏et嚼){}if斜(娘t睬){In偷Or淘de貧r(銜t-粒>lc進(jìn)hi母ld);爸/*遍歷究左子矮樹(shù)書*/vi身si節(jié)t厚(t陪->揭da牙ta認(rèn));貨/燈*訪問(wèn)學(xué)結(jié)點(diǎn)宴內(nèi)容劣*/In內(nèi)Or迫de落r(義t-脆>rc我hi輩ld);怨/*遍歷凡右子萄樹(shù)境*/}3二叉哲樹(shù)的截后序秤遍歷算法艇思想洋:判艦斷二婚叉樹(shù)濤是否鑰為空傾?若為庫(kù)空,筆則結(jié)駁束遍嘉歷;否則影先后攀序遍淺歷根座的左團(tuán)子樹(shù)擴(kuò);再后呈序遍稠歷根雁的右耍子樹(shù)互;最抹好訪飽問(wèn)根vo觸idPo載st鬧Or抓de篩r(BT殘re牲et意){}if婆(綢t遞){Po異st摩Or礎(chǔ)de腿r(覆t-厲>lc菜hi槽ld);借/*遍歷量左子餡樹(shù)波*/Po疾st步Or澆de萄r(蕉t-政>rc隙hi喇ld);亦/*遍歷舉右子描樹(shù)集*/vi轟si煤t圣(t幣->椅da庫(kù)ta斧);屠/框*訪問(wèn)舍結(jié)點(diǎn)鵲內(nèi)容曠*/}二叉手樹(shù)的扶先序繁遍歷葉的非燙遞歸廊算法理解勝遞歸塑算法荒的過(guò)超程ABCDEFGHABDGCEFH二叉蛋樹(shù)的情先序松遍歷殖的非勒遞歸徐算法vo被idPr籃eO督rd獲er(BT串re乞et){PS露eq隱St央ac支kS;BT銳re范ep茄=籃t;S=In誕it陣_S律eq慶St仿ac舒k(某);蕩/必*棧初姨始化燙*/A(利用道棧進(jìn)返行遍漿歷)De贊st珍ro芹y_旅Se楚qS提t(yī)a步ck膽(&赤S);}二叉猜樹(shù)的符先序繳遍歷糊的非叛遞歸削算法A:wh叔il友e皆(贏p乖||付!Em海pt千y_短Se害qS軟ta多ck(S托)曬){if碌(斗p競(jìng)){Vi靠si尤t降(p劇->近da英ta聯(lián))鴿;Pu睡sh舅_S妻eq柄St秧ac幣k(持S,械p肺);些/錢*預(yù)留p指針勞在棧仆中些*/p譜=定p-柔>lc債hi背ld;}el茂se{Po艷p_靈Se保qS慎ta敢ck(S,蹄&p);p查=帽p-旅>rc姻hi泡ld;}麗/*左子繞樹(shù)為紛空,進(jìn)右燥子樹(shù)種*/}目的都是什盒么?從左淚子樹(shù)處返回鈔時(shí)能臨找到幻玉右子絮樹(shù)二叉默樹(shù)的商中序前遍歷寶的非農(nóng)遞歸礙算法理解堵遞歸猜算法倡的過(guò)碎程ABCDEFGHDGBAECHF二叉怖樹(shù)的呈中序侄遍歷肅的非間遞歸客算法vo衛(wèi)idIn藏Or絨de哪r(BT歉re鎮(zhèn)et){PS征eq漫St胸ac鋒kS;BT未re召ep查=鉗t;S=In造it港_S物eq印St華ac候k(含);兩/爹*棧初伸始化騎*/A(利用絕棧進(jìn)放行遍訪歷)De圓st攤ro犬y_貴Se墨qS噴ta賤ck歲(&細(xì)S);}二叉催樹(shù)的鈔中序葛遍歷捷的非垮遞歸廚算法A:wh杜il環(huán)e醒(屯p夾||裙!Em彎pt涉y_攝Se獲qS基ta飼ck(S柔)恐){if蔬(掙p葵){Pu仔sh順_S嫌eq陣St怒ac牲k(鉗S,售p當(dāng));瘡/我*預(yù)留p指針真在棧闊中頭*/p即=伙p-課>lc素hi須ld;}el疫se{Po源p_察Se痰qS役ta年ck(S,舒&p);Vi吊si欠t逗(p趙->護(hù)da嘉ta婚)瓦;p沾=猛p-角>rc低hi阻ld;}懶/*左子卸樹(shù)為企空,進(jìn)右襖子樹(shù)質(zhì)*/}目的禿是什漁么?從左尿子樹(shù)刃返回吊時(shí)訪朗問(wèn)根咳,并復(fù)且通柜過(guò)根電結(jié)點(diǎn)蹈能找沾到右忘子樹(shù)二叉蝦樹(shù)的搭后序滑遍歷駛的非霉遞歸稈算法方法珍一:弄利用親先序屑遍歷良非遞溪?dú)w算促法(按先溜根結(jié)渴點(diǎn)、仍再右子殼樹(shù)、再左子僑樹(shù)的順句序)將找億到的麥要訪境問(wèn)的扣結(jié)點(diǎn)渣壓棧遍歷集結(jié)束膜將棧靜中元總素出簡(jiǎn)棧訪俊問(wèn)vo控idPr柄eO齡rd明er(BT貢r(shí)e常et){PS炒eq療St慰ac說(shuō)kS1俊,S鑄2;BT伏re叉ep姿=暖t;S1語(yǔ)=In繪it店_S劇eq落St鍬ac以k(吳);呼S2辭=In知it落_S化eq硬St蠶ac耀k(桐);wh恐il旗e蒙(跪p企||卻!Em交pt購(gòu)y_比Se焰qS承ta急ck(S應(yīng))隊(duì)){if達(dá)(達(dá)p撲){Pu季sh葵_S改eq惠St姿ac千k(共S1漿,蠶p)從;//保存果到結(jié)溫果棧應(yīng)中Pu記sh盛_S冷eq涉St宏ac薦k(族S2秒,均p)跌;亂/鋪/預(yù)留p指針翼在棧駕中p罪=拋p-小>rc慚hi驅(qū)ld;//先右坑后左}el循se{Po過(guò)p_摟Se銀qS罰ta宣ck(S跌2,清&p螺)闖;p啄=癢p-搬>lc理hi階ld;}}wh胡il廊e惕(飯!Em皮pt陵y_略Se脾qS匹ta哥ck(S員1)談){Po迷p_額Se爐qS混ta議ck(S認(rèn)1,改&p犬)矮;Vi忍si缸t閥(p忍->鳳da盾ta絞)炊;}De棕st桌ro手y_醒Se萬(wàn)qS喊ta耐ck響(&鐵S1士);修D(zhuǎn)餃es識(shí)tr殲oy色_S嬸eq科St潑ac琴k(釣&S還2)肝;}方法牛二:處二叉煤樹(shù)的檢后序帖遍歷險(xiǎn)的非陪遞歸鉆算法理解夢(mèng)遞歸良算法分的過(guò)蓋程ABCDEFGHGDBEHFCA二叉漲樹(shù)的趙后序伶遍歷溪的非軍遞歸貼算法ty低pe服de拳fst恭ru罩ct{Bn畝od巡壽e*n暖od身e;in擠tfl訓(xùn)ag唉;}SD紹at市aT珍yp第e;vo爆idIn性O(shè)r客de斗r(BT禍re州et){PS陪eq現(xiàn)St侵ac載kS;BT蘋re底ep殖=毅t;S=In廉it廉_S款eq里St抄ac賢k(鉆);各/階*棧初陵始化基*/A(利用腦棧進(jìn)復(fù)行遍屈歷)De蛇st槐ro豪y_饒Se迎qS辣ta厚ck味(&他S);}二叉斬樹(shù)的濟(jì)后序付遍歷慣的非弄遞歸裂算法A:wh缸il必e號(hào)(驚p詳||媽!Em研pt巧y_跌Se皺qS免ta籮ck(S際)燈){定if添(其p街){Sq坐.f弄la姿g=0熊;Sq送.n址od叼e=p黃;Pu秀sh爛_S片eq供St貪ac帝k(鳳S,術(shù)S抵q)扯;p綁=叔p-媽>lc棗hi讓ld;默}el戚se{Po躲p_監(jiān)Se覆qS缺ta萌ck(S,排&s畜q);p=sq我.n膝od顧e;if扎(Sq昂.f李la穿g==辨0){Sq立.f旗la遭g=1松;Pu浮sh紡_S那eq料St撤ac騙k(S,隆Sq);p=槐p爐->rc腸hi瓶ld;險(xiǎn)}el家se{辯Vi名si說(shuō)t裂(p詞->征da錫ta霧)覺(jué);p赤=資NU例LL驕;}}目的墊是什既么?目的繼是什但么?目的愁是什系么?從左起子樹(shù)便返回貪時(shí)通問(wèn)過(guò)根禮結(jié)點(diǎn)們能找絮到右組子樹(shù)從右沖子樹(shù)嚼返回秧時(shí)能歸訪問(wèn)記根結(jié)侍點(diǎn)從右買子樹(shù)患返回坦訪問(wèn)謠根后,結(jié)束浪了這達(dá)顆子吸樹(shù)訪詞問(wèn)應(yīng)休返回歡該子瀉樹(shù)的胖雙親,應(yīng)彈沙棧,誕設(shè)為nu抬ll使下俘次循撐環(huán)能順彈棧4二叉島樹(shù)的跳層次鳴遍歷旅算法ABCDEFGH隊(duì)列乓:ABCDEFGHvo落idLe延ve沖lO暖rd證er抓(B慌Tr俱eet){Ps落eq魂Qu逝eu臨eQ;BT采re妥ep;if浪(舉t){蜓Q=In罩it炎_s必eq爽Qu花eu量e()捏;泛//設(shè)置幫一空鴉隊(duì)列In民_s忍eq璃Qu敲eu期e(闊Q,防t);蹦//根結(jié)真點(diǎn)入悉隊(duì)wh禽il利e參(!Em挨pt掃y_紀(jì)se尿qQ建ue四ue(Q憤)){鉆/貫/當(dāng)隊(duì)斜非空暮時(shí)重字復(fù)執(zhí)沖行下騎列操腐作Ou概t_鳥(niǎo)se盞qQ舟ue塑ue柿(Q僻,&破p);Vi數(shù)si渡t(不p->峰da口ta炒);不//出隊(duì)宵訪問(wèn)if訊(滲p-租>Lc敵hi有l(wèi)d)In姜_s岸eq壯Qu獅eu么e(這Q,僑p->Lc廳hi趙ld);韻//左孩柳子入暮隊(duì)if迫(罰p-起>Rc妻hi品ld)In遍_(kāi)s塵eq鼠Qu出eu紋e(菌Q,蛾p->Rc欺hi雨ld);煙/準(zhǔn)/右孩撐子入尚隊(duì)}De勇st建ro帆y_曾Se夕qQ批ue頂ue居(&機(jī)Q);}}5遍歷舌算法轎應(yīng)用紐奉舉例二叉替樹(shù)是錘遞歸跟定義夾,可喂以寫季出它給的遞汪歸遍飽歷算快法,鐵同時(shí)陪借助淋遍歷樹(shù)算法生思想帆可以溝實(shí)現(xiàn)些其它窯算法次,如粱:創(chuàng)建敢二叉營(yíng)樹(shù)、使銷毀段二叉野樹(shù)等時(shí);計(jì)算某二叉煤樹(shù)的息高度忙,計(jì)攻算結(jié)持點(diǎn)數(shù)統(tǒng),二西叉樹(shù)謠的查駱找等賀操作二叉伴樹(shù)的冒創(chuàng)建驕算法在輸蔥入先楊序序堆列時(shí)踐,需托要在劍空節(jié)俱點(diǎn)填座補(bǔ)一保個(gè)特炸殊的水字符友,比淚如,孫‘#’。如城果讀帽入的冰字符奶是‘#’,則獄在相咬應(yīng)的疏位置養(yǎng)上構(gòu)憑造一況棵空娛二叉銹樹(shù);食否則胡,創(chuàng)奪建一月個(gè)新坡結(jié)點(diǎn)催。采犁用先替序遍老歷遞島歸算連法為羅基礎(chǔ)械,二隆叉樹(shù)紹中結(jié)錘點(diǎn)之漠間的亮指針弓連接杏是通臣過(guò)指遭針參憤數(shù)在誰(shuí)遞歸皆調(diào)用轎返回扶時(shí)完犯成。二叉逝樹(shù)的抓創(chuàng)建杯算法AB抱D#霧G#戚##點(diǎn)CE節(jié)##怠FH嬸##凈#ABD#G###CE##FH###BDGCEFHA二叉裁樹(shù)的裁創(chuàng)建逮算法BT唇re忙eCr梢ea倆te規(guī)Bi愉nT曲re誓e(裙vo胖id侍){迅ch蘇arch;BT黨re寺et;ch=ge距tc瞧ha呆r()非;if樂(lè)(ch==劃‘?!?re盲tu腥rn兇NU平LL離;創(chuàng)/*讀入誕#時(shí)便,將息相應(yīng)藏結(jié)點(diǎn)疤指針劉置空溜*/el用se{梨t=早(Bn卵od泉e*)ma泊ll仙oc幣(B島no演de);哄/*生成充結(jié)點(diǎn)飛空間曉*/t-挖>d院at旱a=ch;t-梯>lc托hi屬ld=Cr填ea些te負(fù)Bi蜜nT粘re杜e()脈;t-侮>rc征hi墻ld=Cr太ea內(nèi)te焰Bi轎nT梢re叢e()修;re識(shí)tu蕩rn能t扮;}}二叉項(xiàng)樹(shù)的王創(chuàng)建盤算法vo想idCr哨ea圈te信Bi竿Tr知ee(BT釋re礎(chǔ)e*t鴉){蠶/*以加?jì)鹑肟瞻W結(jié)點(diǎn)貓的先嘆序序隆列輸妨入,肥構(gòu)造洋二叉丸鏈表各*/ch尋arch;ch=ge氧tc栽ha爽r()躺;if各(ch==就‘#’)*t懸=N府UL妖L;銅/運(yùn)*讀入站#時(shí)著,將抗相應(yīng)已結(jié)點(diǎn)抓指針怒置空趕*/el籮se{灶*t列=(Bi者Tr袖ee)ma篩ll賓oc換(B賢no凳de);編/*生成霞結(jié)點(diǎn)芝空間成*/(*仁t)易->丹da刊ta駝=ch;Cr石ea植te胸Bi帥Tr軋ee(&啄((柱*t慣)-撥>lc瓣hi姓l(shuí)d))例;Cr走ea搏te蓋Bi辮Tr碼ee(&爽((獄*t押)-宴>rc慰hi盆ld))硬;}}二叉擁樹(shù)的泉銷毀傳算法算法供思想縮慧:銷毀堅(jiān)二叉特樹(shù)可錄以根獅據(jù)先芬序遍什歷類份似,如先若獸樹(shù)為肌空樹(shù)跟,不差用銷容毀直賣接返芝回;核若為薄非空嶼樹(shù),辯則先欲銷毀黨左子展樹(shù),資再銷趟毀右劑子樹(shù)墊,最掩后銷耐毀根禾節(jié)點(diǎn)勤。vo經(jīng)idDe題st扇ro沫yB囑it庸Tr且ee(BT閱re擠e*t稻){做/*銷毀t表示渣的二近叉樹(shù)世*/if恥(吹(乞*t角)鑒){De快st戚ro爛yB挨iT灣re摔e(&跨((佩*t導(dǎo))-鑼>lc趣hi秘ld))臘;De院st丟ro文yB啦iT卻re尼e(&購(gòu)((蘋*t費(fèi))-未>rc奇hi級(jí)ld))型;fr鳳ee凳(*憐t)仁;*t雄=N請(qǐng)UL戴L;}}計(jì)算算二叉濟(jì)樹(shù)的治結(jié)點(diǎn)鞠個(gè)數(shù)vo饑idCo曉u(píng)n霜t_烈Tr什ee他(B艦Tr蛋eet){蝦i鹽f酸(t擱){Co鐵un怠t_書Tr眉ee蓋(t->lc抬hi扛ld);//統(tǒng)計(jì)多左子季樹(shù)結(jié)執(zhí)點(diǎn)個(gè)踏數(shù)co銜un喘t+典+;//羽co岸un大t為全旗局變杠量Co能un皇t_元Tr說(shuō)ee暗(t->rc靜hi摘ld)娃;//統(tǒng)計(jì)先左子撐樹(shù)結(jié)貫點(diǎn)個(gè)亞數(shù)}}in流tCo桑un蝴t_倡Tr另ee堤(B泄Tr崇eet){in膀tlc掘ou癥nt衰,r捐co秩ut;if代(欣t=某=N敢UL馳L)寄re盆tu逮rn婆0駱;lc逐ou罰nt=Co捏un軍t_巾Tr宣ee閘(t->lc親hi拳ld);rc萄ou位nt=Co臣un蓬t_弄Tr勺ee租(t->rc斬hi馳ld)朱;re始tu攪rn盡(盾lc瞧ou夜nt叮+r口co津un為t+哈1)陣;}求二蒙叉樹(shù)舌每層談結(jié)點(diǎn)白個(gè)數(shù)算法歸思想獸:設(shè)置繭一個(gè)鞋數(shù)組境,數(shù)筑組的灑下標(biāo)敏表示攪樹(shù)的浮層數(shù)厘,該柔下標(biāo)足元素注的值揀記錄昨該層糖元素浴的個(gè)頂數(shù);乘通過(guò)償樹(shù)的作遍歷炎算法跪來(lái)得狹到最館終數(shù)鄰組元坐素的懸值。求二印叉樹(shù)竹每層棚結(jié)點(diǎn)技個(gè)數(shù)in食tnu班m[型20遷];Vo錢idLe蛋vc都o(jì)u里n(BT體re職et,in傲tL,粘in字tnu耗m[煩]棚)//孔L是當(dāng)仇前結(jié)忙點(diǎn)的元層次誤,初絡(luò)值1,nu否m數(shù)組愧元素歉初始鐵化0{if慎(章t捎){nu突m[嚴(yán)L]+珠+;Le敞vc慮ou憂n(t難->lc程hi酷ld,刑L+董1,孕nu姥m)竿;Le嗽vc救ou麗n(t脊->rc的hi錄ld,陜L+莫1,爛nu誦m)各;}}調(diào)用建前,nu擱m數(shù)組妙元素精全部曾清0初始例調(diào)用婦:Le唉vc槐ou鳴n(t番,桌1,叛nu賓m)求二容叉樹(shù)賽的高頓度定義紡:樹(shù)菊中節(jié)壤點(diǎn)深揉度的陷最大冬值結(jié)伍點(diǎn)個(gè)材數(shù)in通tHe吩ig貿(mào)ht處(BT語(yǔ)re盲et湖){in典th1瞎,h痕2;if排(電t=活=N朝UL擠L)駐re逮tu索rn慢0膝;h1揚(yáng)=He銹ig怠ht憤(t->lc鴉hi拜ld);h2倚=He刷ig餐ht驕(t->rc罵hi覽ld);re者tu抗rn家(熱(h態(tài)1>社h2疼)粥?噸h激1+晨1:樹(shù)h2況+1宣);}求二跌叉樹(shù)灘的復(fù)盟制BT載re扁e*Co話py勤Tr構(gòu)ee(BT艘re啊et){BT比re拴es;if爬(但t=綱=棉NU促LL棒)re盈tu授rn錘(瓣NU哀LL蛋);s=薯(Bi榴Tr連ee)ma燥ll擠oc(Bn答od隱e);乎/蹄/復(fù)制學(xué)根結(jié)示點(diǎn)s-被>d主at液a=障t-孩>d植at確a;s-霞>lc批hi槳ld=Co徑py父Tr巨ee娃(t->lc臺(tái)hi寇ld);腥//復(fù)制鉗左子太樹(shù)s-炕>rc允hi飾ld=Co泡py亂Tr缸ee兔(t->rc航hi桐ld);狐/尊/復(fù)制雖右子謎樹(shù)re焦tu條rn誕s鈔;}交換榨二叉姻樹(shù)的初左右挑子樹(shù)vo鵝idch墾an嶄ge距_l貞ef仇t_叔ri轟gh個(gè)t(族BT狼re河eBT矛){廈i蘋f投(B匪T){ch頁(yè)an出ge灶_l掠ef玻t_畏ri蜜gh督t(異BT->lc改hi鐮ld);ch焰an讓ge宿_l絞ef能t_呼ri居gh熔t(矩BT->rc喇hi援ld);BT責(zé)->lc疊hi擱ld<-師>B符T-準(zhǔn)>rc筍hi商ld;}}6.蛙4線索孫二叉輔樹(shù)研究談二叉璃樹(shù)的愁遍歷灶發(fā)現(xiàn)清:通姐過(guò)指風(fēng)定次趙序的管遍歷豈發(fā)現(xiàn)和求結(jié)秩點(diǎn)的辨前驅(qū)惑或后欺繼,惡費(fèi)時(shí)茅間,演效率銹低。如何除解決現(xiàn)?方法1:增跑設(shè)前日驅(qū)和汽后繼簡(jiǎn)指針——在每搭個(gè)結(jié)幕點(diǎn)中族增設(shè)跳兩個(gè)仰指針晨,分臥別指香示該曬結(jié)點(diǎn)棄在指牲定次駕序下映的前票驅(qū)或乞后繼呆。從韻而避抓免使尺用遞辨歸減怕少了勵(lì)函數(shù)很調(diào)用聲的時(shí)干間,狹但增訪加了斷空間眾開(kāi)銷傘。方法2:二叉樹(shù)中搬有很鈔多閑港置的油指針擾,能刪否利取用它集們?yōu)榉υL問(wèn)坊二叉術(shù)樹(shù)提增供便濱利?利用攀二叉他鏈表穩(wěn)中的場(chǎng)空指河針域哪(n個(gè)結(jié)域點(diǎn)的宴二叉言樹(shù)有n+股1個(gè)空瞞指針煎域)窮,將警二叉蹈鏈表她中的聰空的孫指針槽域改孔為指蝦向其獎(jiǎng)前驅(qū)握和后流繼:卷空的蝦左孩沸子指余針指絮向其絡(luò)前驅(qū)農(nóng),空科的右閘孩子撒指針據(jù)指向武其后泥繼傻。ABDGCEFH如何廉區(qū)分誕誰(shuí)是材后繼脊結(jié)點(diǎn)舊,誰(shuí)針是右得孩子破結(jié)點(diǎn)裁?誰(shuí)是采前驅(qū)干結(jié)點(diǎn)汽,誰(shuí)港是左遣孩子他結(jié)點(diǎn)旋?設(shè)立允標(biāo)志優(yōu)位:lt鑰ag=0:lc岡hi膚ld指示非該結(jié)桌點(diǎn)的腿左孩黎子lt似ag=1:lc遲hi脂ld指針南該結(jié)南點(diǎn)的胖前驅(qū)進(jìn)。rt飼ag=0:rc聚hi白ld指示糕該結(jié)答點(diǎn)的半右孩炮子rt硬ag=1:rc射hi樓ld指針前該結(jié)甚點(diǎn)的缺后繼河。中序妹遍歷宏下的帶線索鬼化二掛叉樹(shù)雪形式購(gòu):ABDGCEFH線索仆二叉炭樹(shù)的晚數(shù)據(jù)殼結(jié)構(gòu)怖定義英:ty間pe賤de慚fst獵ru雖ctTh塊re彈ad莖no銀de{in鄰tlt倆ag;st化ru閘ctTh畏re捎ad悲no且de*lc玩hi恥ld;Da季ta笨Ty喝peda史ta劍;in用trt脾ag;st煙ru幫ctTh蘆re惱ad暫no食de*rc賤hi蹦ld;}Th務(wù)re芽ad常no捧de,*Th張re找ad邀Bi盤tT鹽re旋e;中序羽二叉騎樹(shù)的魂線索刮化vo瓦idIn湖Th拿re砌ad(Th綱re莫ad鄉(xiāng)豐Bi培tT荒re振ero傳ot洽,Th叫re謝ad姓Bi藍(lán)tT掙re活epr擇e){鄉(xiāng)豐/*遞歸著中序補(bǔ)線索嗓化二壞叉樹(shù)饒;裳函里數(shù)調(diào)歌用前pr姓e為空討*/if內(nèi)(r農(nóng)oo戶t){In忽Th遞re無(wú)ad怎(r御oo望t->lc彼hi壁ld司,p尖re);肺/*中序窄線索新化左鼓子樹(shù)遠(yuǎn)*/A:當(dāng)主前結(jié)懶點(diǎn)線逗索化In成Th剝r(jià)e發(fā)ad(r里oo間t-鉛>rc何hi廚ld碧,p品re);聲/*中序突線索簽化右農(nóng)子樹(shù)愁*/}/錫/en置di任f}中序聾二叉遍樹(shù)的趟線索大化A:當(dāng)仗前結(jié)攤點(diǎn)線濕索化if械(徐ro扛ot煉->lc珍hi攜ld==棋nu漸ll羽)駁//建立坑前驅(qū)額線索{臺(tái)r雙oo碑t-覆>lt湖ag=1情;ro呢ot影->lc才hi責(zé)ld=p睡re蛾;糊//左孩革子域計(jì)指向翻前驅(qū)}if掠(論ro嶼ot趟->rc標(biāo)hi唱ld==哲nu狡ll筆)ro鵝ot發(fā)->rt蔬ag=1別;if栽(隙(pr墳e)蕩&&刺(p功re->rt炕ag==仆1)pr密e-陪>rc姿hi悉ld=r叔oo伯t;pr跌e=偉ro屑o(jì)t棋;if茄(防(pr掀e)蠻&&昏(p莫re->rc斃hi距l(xiāng)d==炸nu偵ll滅){丟pr俊e-腫>rt南ag=1謝;pr歇e-北>rc員hi偵ld=r針oo扶t;}//為下澤次后梯繼線巖索做立準(zhǔn)備//建立淹后繼悠線索中序燃二叉眨樹(shù)的睬線索什化的戶非遞美歸算獨(dú)法vo那idIn猛Th熱re嬌ad(Th易re歌ad輕Bi衡tT粒re鐵ero朗ot哥,Th枯re京ad死Bi泳tT救re助epr齡e){PS旨eq夾St夏ac芹kS;Bi抵Tr劈燕eep埋=負(fù)t;S=In伐it潔_S界eq舅St嫌ac喝k(柱);銷/股*棧初亂始化泰*/A(利用歸棧進(jìn)監(jiān)行中蘇序線隨索化)De耍st從ro沿yS舞eq型St號(hào)ac握k(深&S);}二叉趴樹(shù)的鋤中序桌遍歷尾的非照遞歸告算法A:wh零il乞e(交p|里|!季Em扎pt興y_院Se確qS哀ta妨ck(禾S)額){拋if予(夏p){Pu傍sh主_S桂eq賠St統(tǒng)ac殲k(斯S,吵p判);魯p紀(jì)=原p益->lc蝦hi棚ld;悟}el胞se{po抓p_品Se詢qS準(zhǔn)ta遼ck(S,要&p);if刃(p食re!=禿NU棚L(fēng)L邀){if犧(!屠pr猾e->rc及hi景l(fā)d){掘pr促e-鎮(zhèn)>rc恨hi筋ld=p太;描pr戴e-宴>rt鎖ag=1亂;灰}if層(!錫p->lc衰hi自ld){翁p-魯>rl昏ch棄il耳d=p果re甲;香p-抽>lt揮ag=1裕;娘}pr遇e=違p;p喚=擠p-野>rc墓hi倘ld;}}/鍋/e猛nd須w泛hi爭(zhēng)le中序說(shuō)線索坑化的浙二叉臭樹(shù)的楊前驅(qū)Th晝r(jià)e蛇ad維no歌de*In司Pr角eN怎od川e(Th棵re張ad墾no衰de*德p){孝//在中猶序線星索二臥叉樹(shù)眠上尋答找結(jié)鉛點(diǎn)p的中廚序前倍驅(qū)結(jié)望點(diǎn)爭(zhēng),假粒設(shè)p非空Th攏re培ad袋no蓬de*她pr緣瑞e;pr公e迎=p萍->lc敘hi鮮ld;if剪(推p-駛>lt賣ag==蛾0){剩wh魔il俯e脖(箱pr搏e魂&&努p臥re滔-藍(lán)>rt叨ag==圓0)pr報(bào)e丟=pr烈e->rc鞠hi案ld;}re面tu倡rn梯(趙pr縱e)岡;}中序繞線索檢化的改二叉飽樹(shù)的榜后繼Th妖re苗ad擠no口de*In遲Po導(dǎo)st嚼No娘de(Th圣re黃ad舊no蒙de*唯p){嶄//在中嬌序線舟索二賀叉樹(shù)屑上尋寫找結(jié)命點(diǎn)p的中禿序前偷驅(qū)結(jié)河點(diǎn)尋,假頁(yè)設(shè)p非空Th窯re碧ad滑no谷de*弦po辛st劍;po逮st羊=亮p-觸>rc手hi鞏ld;if怕(咳p-念>rt辣ag==淡0){她wh華il掛e里(屆po漫st少&腦&看po光st糕-獎(jiǎng)>lt握ag==盞0)po亞st濫=po拍st->lc封hi訂ld;}re挺tu民rn棟(英po版st像);}中序旬線索誼化的撞二叉評(píng)樹(shù)的假遍歷vo囑idIn受Or輩de元rT秘h(Th粘re胳ad菠no填de*勤ro切ot傻)/*對(duì)中維序線非索二逢叉樹(shù)此進(jìn)行炸中序鋒遍歷犬*/{Th尊re栽ad獅no育de*么p;if隸(木ro頁(yè)ot銹){切p=移ro著ot圖;wh衡il盒e躍(p請(qǐng)->lt招ag==壟0)翻p=屢p-惜>lc州hi歪ld;掌/*找最顧左下屠的結(jié)尋點(diǎn)*/wh肆il碰e鎖(p別){vi揮si園te犬(p->領(lǐng)da商ta彩);鞋/賽*訪問(wèn)毀當(dāng)前論結(jié)點(diǎn)鑄*/p=In層Po蹤蝶st黃No寶de(p罰);貢/*尋找密結(jié)點(diǎn)p的后把繼結(jié)敵點(diǎn)副*/}}}中序閉線索突化的山二叉論樹(shù)的屈查找雄指定惜的xTh澡re截ad職no榆de*In警Se悶ar耳ch它Th(Th悠re臂ad脊no怖de*誤ro煙o(wú)t,in賞tDa申ta告Ty裳pex)/*對(duì)中委序線廳索二部叉樹(shù)簽進(jìn)行爭(zhēng)搜索*/{Th乓re狐ad幣no陡de*鼠p;if挑(富ro瓣ot父){底p=們r(jià)o捎ot洽;wh必il攜e毀(p嗚->lt昆ag==嚴(yán)0)塞p=株p-充>lc密hi做ld;找/*找最屬左下聚的結(jié)扛點(diǎn)*/wh厚il手e愧(p丈&竿&p-兆>d許at圾a脈!=虛x)p=In慕Po漆st裹No種de(p燃);汽/*尋找粥結(jié)點(diǎn)p的后察繼結(jié)敬點(diǎn)肝*/}re貼tu娘rn孕p康;}6.滋5樹(shù)和部森林一、撕樹(shù)的樓存儲(chǔ)思結(jié)構(gòu)1、雙聞?dòng)H表鮮示法2、孩絲式子表牧示法3、孩米子兄期弟表?xiàng)l示法每個(gè)叼節(jié)點(diǎn)盛中存眨儲(chǔ)自襯己的頸第亡一個(gè)日孩子侍和兄纖弟的泉地址級(jí)(連叫接所卵有的白兄弟誕),訓(xùn)鏈接睛方式己存儲(chǔ)孩子辣兄弟浮表示醋法數(shù)她據(jù)結(jié)隊(duì)構(gòu)定窄義:ty祝pe每de抵fst需ru善cttn榆od吃e{Da多ta匆Ty某peda峰ta廢;st世ru柳cttn愧od竿e*fi膜rs盆ts末on;st制ru肆cttn暴od端e*ne稀xt座br敵ot貴he妄r;}Tn截od沿e;二、碗樹(shù)、盡森林娛和二璃叉樹(shù)丸的轉(zhuǎn)魔換1、樹(shù)鐵轉(zhuǎn)換畜為二窯叉樹(shù)樹(shù)中遲所有妹相鄰慈兄弟侄之間匯加一載條連廳線。對(duì)樹(shù)途中的柴每個(gè)口結(jié)點(diǎn)廣,只牛保留活它與糾第一啟個(gè)孩客子結(jié)戰(zhàn)點(diǎn)之登間的剖連線憲,刪腥去它晶與其掩它孩父子結(jié)框點(diǎn)之噴間的干連線等。以樹(shù)銳的根廊結(jié)點(diǎn)何為軸葛心,宵將整蛇棵樹(shù)摟順時(shí)府針轉(zhuǎn)欲動(dòng)一飄定的講角度話,使語(yǔ)之結(jié)緒構(gòu)層瘦次分晃明樹(shù)與仿二叉皂樹(shù)的帖轉(zhuǎn)換甚圖2、森攪林轉(zhuǎn)稠?yè)Q為薯二叉蹈樹(shù)由于傘樹(shù)轉(zhuǎn)點(diǎn)換成孔二叉旬樹(shù)形遲式后色根的洪兄弟捎指針蔥總為掩空,所以宮可以籌將森百林中糖的每則棵樹(shù)梯的根挑互看恰成是臟兄弟昨,將唯第二棵樹(shù)宋接到晶第一餐棵的步兄弟量上,暑依次障類推喝,可勿以將n棵樹(shù)鮮鏈成兄瓦弟鏈天。方法傳:將森紫林中狂的每碼棵樹(shù)袖轉(zhuǎn)換愧成二歐叉樹(shù)將轉(zhuǎn)限換好假的每勒棵二負(fù)叉樹(shù)色通過(guò)慘根節(jié)植點(diǎn)的爛右分折支相槳連二叉擁樹(shù)轉(zhuǎn)洽換為副樹(shù)或把森林方法僑:若某片結(jié)點(diǎn)竭是其恐雙親拜的左援孩子取,則醬把該主結(jié)點(diǎn)區(qū)的右紹孩子宇、右認(rèn)孩子余的右味孩子……都與游該結(jié)飛點(diǎn)的臭雙親血結(jié)點(diǎn)宿用線珠連起湯來(lái)。刪去態(tài)原二掌叉樹(shù)淺中所賣有的虎雙親也結(jié)點(diǎn)傾與右斷孩子亭結(jié)點(diǎn)麗的連游線。整理廉所得仁到的污樹(shù)或床森林季,使非之結(jié)聲構(gòu)層渴次分墻明。三、壁樹(shù)、溉森林銜的遍現(xiàn)歷1、樹(shù)摸的遍勝歷樹(shù)的后根發(fā)遍歷襯:(1)按搶照從花左到同右的結(jié)順序滑后根憲遍歷劇根結(jié)炎點(diǎn)的姐每一鳥(niǎo)棵子余樹(shù)。(2)訪稅問(wèn)根染結(jié)點(diǎn)篩;EF薄BC是GD陣A樹(shù)的傷先根棗遍歷真:(1)訪舍問(wèn)根裝結(jié)點(diǎn)框;(2)按鳳照從頑左到紋右的靜順序勤先根客遍歷昂根結(jié)碧點(diǎn)的獨(dú)每一饅棵子畫樹(shù)。AB每EF贈(zèng)CD觸G看成嬌二叉完樹(shù)后街先序尾遍歷:AB什EF躬CD也G看成賀二叉隊(duì)樹(shù)后吩中序帶遍歷EF悶BC顆GD墓AEBACDGF得出蒜什么志結(jié)論旨?樹(shù)的膨先根伏遍歷智與其猛轉(zhuǎn)換縱的相根應(yīng)二山叉樹(shù)迅的先禿序遍汽歷的種結(jié)果芹相同嘴;樹(shù)逐的后蛛根遍城歷與挨其轉(zhuǎn)漆換的桶相應(yīng)掉二叉陷樹(shù)的蛇中序負(fù)遍歷談的結(jié)挖果相蘭同2、森梢林的樓遍歷前(先)序遍榜歷:獻(xiàn)若森濤林非旱空(1)訪沾問(wèn)森蠶林中在第一宣棵樹(shù)亦的根殿結(jié)點(diǎn)凡;(2)前營(yíng)序遍蘆歷第結(jié)一棵昏樹(shù)的培根結(jié)爛點(diǎn)的起子樹(shù)賭森林暢;(3)前居序遍結(jié)歷去音掉第樂(lè)一棵石樹(shù)后稿的子繼森林?jǐn)?。中序椅遍歷揭:若燃森林啟非空(1)中低序遍川歷第洗一棵株樹(shù)的監(jiān)根結(jié)鴨點(diǎn)的溉子樹(shù)沉森林農(nóng);(2)訪禿問(wèn)森街林中端第一趙棵樹(shù)好的根傾結(jié)點(diǎn)懶;(3)中倒序遍重歷去孟掉第之一棵讓樹(shù)后嬌的子貸森林戒。后序題遍歷長(zhǎng):若如森林憲非空(1)后半序遍輛歷第抹一棵嗽樹(shù)的殿根結(jié)期點(diǎn)的焦子樹(shù)則森林亭;(2)后忽序遍絮歷去棄掉第場(chǎng)一棵淡樹(shù)后磨的子賢森林撕;(3)訪榜問(wèn)森項(xiàng)林中帖第一憑棵樹(shù)針的根駕結(jié)點(diǎn)賺。廣度皂優(yōu)先乘搜索從第牌一層疫開(kāi)始倚,自科頂向疤下、紹同層僑自左圾向右搬,依首次訪問(wèn)筋森林公中各底棵樹(shù)蹤蝶的結(jié)建點(diǎn),令不要泡求一怨棵樹(shù)它一棵脫樹(shù)地礎(chǔ)解決。6.允6惕H雙uf感fm照an樹(shù)問(wèn)題箱的提蘭出:吧在通痕信系饅統(tǒng)中歷,要帥發(fā)送身由A,B,C,D四個(gè)址字符岔組成糖的信雨息,A出現(xiàn)曾的概率為0.懼5,B出現(xiàn)吳的概率為0.鄉(xiāng)豐25,C出現(xiàn)扮的概率為0.括1,D出現(xiàn)緊的概率為0.罵15。如藍(lán)何對(duì)A、B、C、D四個(gè)脹字符杜進(jìn)行豈編碼杠,能斧使總欺的編屬碼長(zhǎng)吩度最貧短?改進(jìn)帽編碼潑:采螞用不高等長(zhǎng)棄的編之碼方書法:前綴茅編碼船:設(shè)疾計(jì)不云等長(zhǎng)拒的編筍碼,弟且任災(zāi)一字搏符的矛編碼到都不伏是其燥他字醒符編律碼的東前綴結(jié)論久:不拿等長(zhǎng)房誠(chéng)的編際碼可萍以較鑄少數(shù)幫據(jù)量奴,起額到壓申縮編抹碼的蛾目的器。Hu辛ff萄ma忙n樹(shù)的討相關(guān)挑概念而:路徑芝:從樹(shù)短中一走個(gè)結(jié)宗點(diǎn)到句另一杜個(gè)結(jié)豎點(diǎn)之黨間的療分支滴構(gòu)成譯兩個(gè)楊結(jié)點(diǎn)書之間綁的路必徑。路徑蠟長(zhǎng)度每:路徑寄上的節(jié)分支豎數(shù)目看。樹(shù)的怖路徑再長(zhǎng)度辭:根結(jié)納點(diǎn)到際每個(gè)倍結(jié)點(diǎn)微的路聞徑長(zhǎng)學(xué)度之撇和。樹(shù)的江帶權(quán)視路徑叼長(zhǎng)度?。簶?shù)中額所有簽葉子炊結(jié)點(diǎn)墻的帶浮權(quán)路匆徑長(zhǎng)楚度之酷和。記作:WP耳L=∑wili(i挪=1鮮,…躁,m賺)其中皇,wi是第i個(gè)葉焦子結(jié)科點(diǎn)的乖權(quán)值在,li為從耕根到逗第i個(gè)葉御子結(jié)己點(diǎn)的宜路徑雞長(zhǎng)度腥,m為樹(shù)賭的葉客子結(jié)受點(diǎn)的賓個(gè)數(shù)Hu崗ff缺ma就n樹(shù)的逢定義密:最優(yōu)叔二叉依樹(shù):設(shè)有m個(gè)權(quán)互值{w1,w2,…程,wm},構(gòu)襪造一芳棵有m個(gè)葉形子結(jié)征點(diǎn)的打二叉捎樹(shù),拜第i個(gè)葉類子結(jié)終點(diǎn)的神權(quán)值重為wi,則名帶權(quán)境路徑溉長(zhǎng)度WP燃L最小村的二抖叉樹(shù)仰被稱擇作最過(guò)優(yōu)二盯叉樹(shù),這種蠟最優(yōu)否二叉續(xù)樹(shù)也增稱之塘為哈夫?qū)俾鼧?shù)Hu詞ff蜘ma素n樹(shù)的慚例子圾:wp拉l=(酷3+至4+逗9+刪15范)*辛2=錢62wp演l=1續(xù)5*疤1+誕9*蝦2+喬(3犧+4派)*新3=姓54wp烘l=4孤*1略+1薯5*鞏2藥+(役9+陽(yáng)3)并*3都=7探0Hu磁ff子ma燈n樹(shù)的恨構(gòu)造掃:(1紛)根據(jù)墓給定霞的n個(gè)權(quán)轉(zhuǎn)值{w扔1,括w2偏,…,wn},構(gòu)泥成m棵二獨(dú)叉樹(shù)嗓的集但合T=缺{T叮1,漠T2潮,…爹,Tn},其薦中每碼個(gè)Ti只有熄一個(gè)碎帶權(quán)勇為wi的根講結(jié)點(diǎn)毅,其槳左右領(lǐng)子樹(shù)交均空溪。(2斃)從T中選舊兩棵午根結(jié)敞點(diǎn)的乖權(quán)值夸最小像的二刪叉樹(shù),不妨片設(shè)為Ti丘′,拘Tj′并作絮為左本右子鴿樹(shù)構(gòu)釀成一誰(shuí)棵新勻的二脂叉樹(shù)Tk’,并桑且置低新二乞叉樹(shù)綠的根熊值為論其左奪右子往樹(shù)的起根結(jié)露點(diǎn)的觀權(quán)值冊(cè)之和掉。(3瓜)將新批二叉柱樹(shù)Tk’并入T中,同時(shí)違從T中刪餓除Ti量′,外Tj′。(4握)重復(fù)(2完)、(3尤),直雹到T中只詠有一罪棵樹(shù)趣為止殲。這蓮棵樹(shù)門便是巨哈夫駱曼樹(shù)脂。假設(shè)巴有一畢組權(quán)災(zāi)值{5耳,2份9,倒7,久8,喊14壇,2憐3,美3,振11壁},下構(gòu)面我即們將朋利用劈燕這組鉤權(quán)值偽演示桃構(gòu)造知哈夫瓦曼樹(shù)嘴的過(guò)最程。52978142331181519294258100帶權(quán)鞭路徑助長(zhǎng)度惡為:WP壩L=(2斃3+角29祝)*稠2+鍋(1室1+廚14諷)*賠3+(零3+聾5+蛋7+來(lái)8)針*4顫=2患71帶權(quán)駁路徑照長(zhǎng)度點(diǎn)為:WP榨L=10算0+占42兵+5爺8+釘19知+2匹9+護(hù)8+1信5=賓27限1Hu繳ff皇ma東n樹(shù)的寇特點(diǎn)晨:特點(diǎn)1:若挺一棵蓋二叉塵樹(shù)是株哈夫勸曼樹(shù)末,則鑒該二錢叉樹(shù)盤不存攻在度閑為1的結(jié)緞點(diǎn)。特點(diǎn)2:若杯給定箏權(quán)值緞的葉促子結(jié)制點(diǎn)個(gè)診數(shù)為n,則嫁所構(gòu)蜻造的奸哈夫蛋曼樹(shù)揪中的叉結(jié)點(diǎn)芬數(shù)是2n扇-1。特點(diǎn)3:任每一棵符哈夫毫曼樹(shù)聲的帶孩權(quán)路積徑長(zhǎng)陽(yáng)度等什于所鏟有分頑支結(jié)邪點(diǎn)值搞的累蠅加和束。哈夫常曼編梁碼前綴材編碼伏方式繳,能惰實(shí)現(xiàn)據(jù)一組焦指定貴出現(xiàn)乏頻率壩字符肅編碼歇長(zhǎng)度垂之和返最小A:抄0T:爪10C:料11禾0S:爺11精1#d跪ef掀in阿e確N鏡2趣0委/陸*葉子條結(jié)點(diǎn)修數(shù)拜*/ty轉(zhuǎn)

溫馨提示

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