1樓:匿名使用者
我可以給你畫乙個森林!你要這個森林幾棵樹
把二叉樹轉換為為森林 如圖
2樓:匿名使用者
樹或森林與二叉樹之間有乙個自然的一一對應關係。任何乙個森林或一棵樹可惟一地對應到一棵二叉樹;反之,任何一棵二叉樹也能惟一地對應到乙個森林或一棵樹。
將樹轉換為二叉樹:
樹中每個結點最多只有乙個最左邊的孩子(長子)和乙個右鄰的兄弟。按照這種關係很自然地就能將樹轉換成相應的二叉樹:1.
在所有兄弟結點之間加一連線2.對每個結點,除了保留與其長子的連線外,去掉該結點與其它孩子的連線。
將乙個森林轉換為二叉樹:
具體方法是:1.將森林中的每棵樹變為二叉樹;2.因為轉換所得的二叉樹的根結點的右子樹均為空,故可將各二叉樹的根結點視為兄弟從左至右連在一起,就形成了一棵二叉樹。
是樹轉換為二叉樹的逆過程。
1.加線。若某結點x的左孩子結點存在,則將這個左孩子的右孩子結點、右孩子的右孩子結點、右孩子的右孩子的右孩子結點…,都作為結點x的孩子。將結點x與這些右孩子結點用線連線起來。
2.去線。刪除原二叉樹中所有結點與其右孩子結點的連線。
二叉樹轉換為森林:
假如一棵二叉樹的根節點有右孩子,則這棵二叉樹能夠轉換為森林,否則將轉換為一棵樹。
1.從根節點開始,若右孩子存在,則把與右孩子結點的連線刪除。再檢視分離後的二叉樹,若其根節點的右孩子存在,則連線刪除…。直到所有這些根節點與右孩子的連線都刪除為止。
2.將每棵分離後的二叉樹轉換為樹。
畫出下圖二叉樹的中序線索二叉樹並轉化為森林,麻煩說一下解題過程
3樓:東風冷雪
中序線索二叉樹 先根,在左子樹,然後右子樹。
左線索指向前乙個結點,左線索指向後乙個結點。
中序遍歷 abcdefghi.
化成為森林,這個看一下書
4樓:ˉ海棠無香
上面那個答案說的是先序
畫出下圖所示二叉樹轉化而成的森林,並寫出該森林的先序遍歷序列
5樓:匿名使用者
左孩子右兄弟 windows畫圖拯救你。。lrd遍歷dhebafcg
此二叉樹,怎麼變為森林,求畫圖
6樓:老子賢狼赫蘿
e f g i/ | \ |a d j h/ \c b
原則是左孩子右兄弟
希望對你有所幫助
如圖,資料結構問題,這個二叉樹怎麼轉化為森林
7樓:舊同桌的你
記住左孩子右兄弟,a的左子樹b是它的乙個節點,b的右子樹c是b的兄弟,同時也是a的乙個節點,所以在a這棵樹上有b和c兩個節點;
a的右子樹有d,d的右子樹有g,所以a、d、g三者互為兄弟,也就是有a、d、g這三棵樹;
d有乙個左子樹e,e有乙個右子樹f,所以e和f為d樹下的兩個節點
畫出二叉樹對應的森林
8樓:匿名使用者
你這個二叉樹copy畫得不
清楚,可以上個**嗎?
方法:二叉樹轉換為樹和森林。若二叉樹非空,則二叉樹根及其左子樹為第一棵二叉樹形式,二叉樹根的右子樹又可以看做乙個由森林轉換後的二叉樹,應用同樣的方法,直到最後產生一棵沒有右子樹的二叉樹為止,這樣就得到乙個森林。
為了進一步得到樹,可用樹的二叉連結串列表示逆方法,即結點的右子樹的根、右子樹的右子樹的根......找出原本是同乙個雙親的兄弟。二叉樹轉換為樹或森林是唯一的。
參考如下圖:
求畫出二叉樹轉換對應的森林
9樓:匿名使用者
-----
a c f
/ /
b e
/ \
d g
如何將二叉樹轉變為森林,將二叉樹轉化為樹森林?
左孩子,右兄弟 凡是右子樹都斷開,就是森林了 資料結構上應該有方法呀,有了方法就是把方法用乙個程式語言描述下了,是吧?寫什麼程式啊,這純粹就乙個理論問題。如按左子 右兄弟的方法,二叉樹和森林的計算機內部表示根本就是一樣的,不用轉換,就看你怎麼用了。將二叉樹轉化為樹 森林 二叉樹轉bai換為森林 前提...
怎麼把二叉樹的鏈式儲存結構轉化為順序儲存結構
1 建立乙個單鏈表,並從螢幕顯示單鏈表元素列表。2 從鍵盤輸入乙個數,查詢在以上建立的單鏈表中是否存在該數 如果存在,顯示它的位置 如果不存在,給出相應提示。3 在上述的單鏈表中的指定位置插入指定的元素 4 刪除上述單鏈表中指定位置的元素。源程式 標頭檔案 include include typed...
先序線索二叉樹的遍歷,後序線索二叉樹怎麼畫啊
include include typedef enum pointertag 指標標誌 typedef char datatype typedef struct bithretreebithretree bithretree pre 全域性變數,用於二叉樹的線索化 bithretree creat...