C語言的數(shù)據(jù)結構之樹、森連、二叉樹之間的轉換圖解
樹 到 二叉樹
例子:
1.給兄弟加線
2.給出長子外的孩子去線
3.層次調整 (整體向左偏移45°)
eg:
1.給兄弟加線:
2.給處長紫外的孩子去線
3.層次調整,整體向左偏移45° (由兄弟轉化來的孩子都是右節(jié)點,第一個節(jié)點都是左節(jié)點)
j為i的兄弟節(jié)點,轉換后為i的右孩子,h是c的第個節(jié)點,轉換后為左孩子。
將森林轉化成二叉樹
1.將森林中的每棵樹轉化成二叉樹(與上面將樹轉換成二叉樹的方法一樣)
2.將所有的二叉樹轉換成一棵二叉樹(將第二棵樹的根節(jié)點當作第一棵樹的右孩子,將第三棵樹的根節(jié)點當作第二棵樹的右孩子……依次類推)
3.將這些二叉樹連成總的二叉樹:
二叉樹轉換成樹:
1.加線:如果一個節(jié)點的左孩子存在,就將節(jié)點與左孩子節(jié)點的右孩子節(jié)點,右孩子節(jié)點的右孩子節(jié)點相連(依次)
2.去線:去掉與右孩子之間的連線
3.進行層次調整(整體都往右偏移45°)
二叉樹轉換成森林
一棵二叉樹轉換成森林看這顆二叉樹是否右右子樹,如果有則能轉換成森麗,否則只能轉換成樹
1.尋找右孩子去線(每次都觀察去掉后的樹是否有右孩子,有則去掉)
2.將分離的二叉樹轉換成樹
再將它們轉換成樹 (根節(jié)點有左孩子就與左孩子的右節(jié)點,右節(jié)點的右節(jié)點……相連,再斷開左節(jié)點與之相連的右節(jié)點后向右偏移45°)
到此這篇關于C語言的數(shù)據(jù)結構之樹、森連、二叉樹之間的轉換詳解的文章就介紹到這了,更多相關C語言的數(shù)據(jù)結構樹內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!