C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)之樹(shù)、森連、二叉樹(shù)之間的轉(zhuǎn)換圖解
樹(shù) 到 二叉樹(shù)
例子:
1.給兄弟加線(xiàn)
2.給出長(zhǎng)子外的孩子去線(xiàn)
3.層次調(diào)整 (整體向左偏移45°)
eg:
1.給兄弟加線(xiàn):
2.給處長(zhǎng)紫外的孩子去線(xiàn)
3.層次調(diào)整,整體向左偏移45° (由兄弟轉(zhuǎn)化來(lái)的孩子都是右節(jié)點(diǎn),第一個(gè)節(jié)點(diǎn)都是左節(jié)點(diǎn))
j為i的兄弟節(jié)點(diǎn),轉(zhuǎn)換后為i的右孩子,h是c的第個(gè)節(jié)點(diǎn),轉(zhuǎn)換后為左孩子。
將森林轉(zhuǎn)化成二叉樹(shù)
1.將森林中的每棵樹(shù)轉(zhuǎn)化成二叉樹(shù)(與上面將樹(shù)轉(zhuǎn)換成二叉樹(shù)的方法一樣)
2.將所有的二叉樹(shù)轉(zhuǎn)換成一棵二叉樹(shù)(將第二棵樹(shù)的根節(jié)點(diǎn)當(dāng)作第一棵樹(shù)的右孩子,將第三棵樹(shù)的根節(jié)點(diǎn)當(dāng)作第二棵樹(shù)的右孩子……依次類(lèi)推)
3.將這些二叉樹(shù)連成總的二叉樹(shù):
二叉樹(shù)轉(zhuǎn)換成樹(shù):
1.加線(xiàn):如果一個(gè)節(jié)點(diǎn)的左孩子存在,就將節(jié)點(diǎn)與左孩子節(jié)點(diǎn)的右孩子節(jié)點(diǎn),右孩子節(jié)點(diǎn)的右孩子節(jié)點(diǎn)相連(依次)
2.去線(xiàn):去掉與右孩子之間的連線(xiàn)
3.進(jìn)行層次調(diào)整(整體都往右偏移45°)
二叉樹(shù)轉(zhuǎn)換成森林
一棵二叉樹(shù)轉(zhuǎn)換成森林看這顆二叉樹(shù)是否右右子樹(shù),如果有則能轉(zhuǎn)換成森麗,否則只能轉(zhuǎn)換成樹(shù)
1.尋找右孩子去線(xiàn)(每次都觀察去掉后的樹(shù)是否有右孩子,有則去掉)
2.將分離的二叉樹(shù)轉(zhuǎn)換成樹(shù)
再將它們轉(zhuǎn)換成樹(shù) (根節(jié)點(diǎn)有左孩子就與左孩子的右節(jié)點(diǎn),右節(jié)點(diǎn)的右節(jié)點(diǎn)……相連,再斷開(kāi)左節(jié)點(diǎn)與之相連的右節(jié)點(diǎn)后向右偏移45°)
到此這篇關(guān)于C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)之樹(shù)、森連、二叉樹(shù)之間的轉(zhuǎn)換詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)樹(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)小小圣誕樹(shù)源代碼
圣誕節(jié)當(dāng)然要有個(gè)圣誕樹(shù)了,今天給你們用C語(yǔ)言編寫(xiě)一個(gè)雪夜圣誕樹(shù),這篇文章主要給大家介紹了關(guān)于C語(yǔ)言實(shí)現(xiàn)小小圣誕樹(shù)的相關(guān)資料,需要的朋友可以參考下2023-12-12C++實(shí)現(xiàn)基于控制臺(tái)界面的吃豆子游戲
這篇文章主要介紹了C++實(shí)現(xiàn)基于控制臺(tái)界面的吃豆子游戲,實(shí)例分析了吃豆子游戲的原理與C++實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04