1. 程式人生 > >森林和二叉樹的轉換

森林和二叉樹的轉換

       樹是一種資料結構,而二叉樹是樹的最重要的一種。所有的樹都可以找到一棵為一對應的二叉樹。而從物理儲存結構來說,它們的二叉連結串列是相同的,只是解釋的角度不同。
        一、森林轉換為樹 
       如果F={T1,T2,...,Tn}是森林,按如下的規則轉換為一棵二叉樹B={root,LB,RB}。
       (1)若F為空,即m=0,則B為空樹。
       (2)若F非空,即m≠0,則B的根root即為森林的第一棵樹的根ROOT(T1);B的左子樹LB是從T1中根節點的子森林F1={T11,T12,...,T1m1}轉換而成的二叉樹;其右子樹RB是從森林F'={T2,T3,...,Tm}轉換而成的二叉樹。
        二、二叉樹轉換為森林
        如果B=(root,LB,RB)是一棵二叉樹,則可按下規則轉換為森林 
       (1) 若B為空,則F為空
       (2) 若B為非空,則F中第一棵樹T1
的根ROOT(T1)即為二叉樹根root;T1中的根節點的子森林F1是由B的左子樹LB轉換為森林;F中除了T1之外其餘的樹組成的森林F'={T2,T3,...,Tm}是由B的右子樹RB轉換而成的森林。

相關推薦

森林轉換

       樹是一種資料結構,而二叉樹是樹的最重要的一種。所有的樹都可以找到一棵為一對應的二叉樹。而從物理儲存結構來說,它們的二叉連結串列是相同的,只是解釋的角度不同。        一、森林轉換為樹        如果F={T1,T2,...,Tn}是森林,按如下的規則轉

森林轉換

樹轉換為二叉樹 (1)加線。在所有兄弟結點之間加一條連線。 (2)去線。樹中的每個結點,只保留它與第一個孩子結點的連線,刪除它與其它孩子結點之間的連線。 (3)層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。(注意第一個孩子是結點的左孩子

轉換森林的轉化

樹具有二叉連結串列的形式,可以將其他形式的樹轉化為二叉連結串列的形式。並且森林合併樹也是基於二叉連結串列形式的樹進行合併的。下面給出程式碼: /** * @Title: CTree.java * @Package tree * @Description

資料結構學習筆記-森林的轉化、最優

int min(HuffmanTree &HT,int i) { int k = MAX; int j,flag = 0; for(j=1;j<=i;++j) { if(HT[j].weights2) { change = s1; s1 = s2; s2 = chang

資料結構——第三章:03森林

1.樹的三種儲存結構: (1)雙親表示法: #define MAX_TREE_SIZE 100 結點結構: typedef struct PTNode {   Elem data;   int parent; //雙親位置域 } PTNode; (2)孩子雙親連結串列表示法: &nbs

第六章--森林-計算機17級 7-2 家譜處理 (30 分)

7-2 家譜處理 (30 分) 人類學研究對於家族很感興趣,於是研究人員蒐集了一些家族的家譜進行研究。實驗中,使用計算機處理家譜。為了實現這個目的,研究人員將家譜轉換為文字檔案。下面為家譜文字檔案的例項: John Robert Frank And

第六章--森林-計算機17級

解析在後面,有問題的話歡迎各位大佬指正:   答案解析: 提示:不會做就畫圖,原理雖然不理解但答案基本都能出來 p1-1: x2-1: x2-2:同b1-1 x2-3:這個其實你只要會了森林轉換成二叉樹的方法畫個圖自

第六章--森林-計算機17級 7-1 的同構 (25 分)(答案超詳解)

7-1 樹的同構 (25 分) 給定兩棵樹T1和T2。如果T1可以通過若干次左右孩子互換就變成T2,則我們稱兩棵樹是“同構”的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點A、B、G的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。  

資料結構與演算法12-森林轉換

樹和森林的二叉樹轉換 對於樹來說,在滿足樹的條件下可以是任意開頭,一個結點可以有任意多個孩子,顯然對樹的處理要複雜得多,去研究關於樹的性質和演算法,真的不容易。有沒有簡單的方法來處理樹呢?當然有啦~ 前面我們提到過的樹的孩子兄弟法可以將一棵樹用二叉連結串列進行儲存,所以藉助二叉連結串列,樹和

森林的相互轉換

eight inf http 轉換 alt 森林 技術分享 分享 相互 樹、森林與二叉樹的相互轉換

森林轉換總結

前言:   在樹這一塊的資料結構中最重要的就是二叉樹,但是對於我們大部分人來說二叉樹的基礎掌握還是ok的,但是有時候我們也會忽略了樹於森林(本人就是忽略了),今天就在這裡總結總結數、森林與二叉樹的轉換

森林的互相轉換

 1.樹、森林到二叉樹的轉換 (1)將樹轉換為二叉樹      樹中每個結點最多隻有一個最左邊的孩子(長子)和一個右鄰的兄弟。按照這種關係很自然地就能將樹轉換成相應的二叉樹:   ①在所有兄弟結點之間加一連線;   ②對每個結點,除了保留與其長子的連線外,去掉該結點與其它孩子的連線。 【例】下面(a)圖所

的同構 (25 分)(答案超詳解)第六章--森林-計算機17級 7-1

7-1 樹的同構 (25 分) 給定兩棵樹T1和T2。如果T1可以通過若干次左右孩子互換就變成T2,則我們稱兩棵樹是“同構”的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點A、B、G的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。 圖1

資料結構——森林轉換

在介紹樹的儲存結構時,就說到了樹的孩子兄弟表示法可以將一棵樹用二叉連結串列進行儲存,所以藉助二叉連結串列,樹和二叉樹可以互相轉換。從物理結構上來看,它們的二叉連結串列也是相同的,只是介紹不太一樣而已。因此,只要我們設定一定的規則,用二叉樹來表示樹,甚至表示森林都

轉換森林&森林變成

一,樹轉換成二叉樹 1,將所有兄弟結點連起來; 2,保留第一個兄弟結點與父節點的連線,斷開其他兄弟結點與父節點的連線,然後以根節點為軸按照順時針方向旋轉45度 二,二叉樹轉換成

轉換

樹和二叉樹是兩種不同的資料結構,樹實現起來比較麻煩,但是樹可以轉換為二叉樹進行處理,處理完以後再從二叉樹還原為樹。 下面說說轉換的方法: 1. 樹轉換為二叉樹 (1) 樹中所有相同雙親結點的兄弟結

coding A&D:森林轉換

首先,樹轉二叉樹: 「1」兄弟+橫線  樹中的每一個結點,如果該結點有兄弟結點,那麼就在這幾個兄弟結點之間進行連線。 「2」儲存長子線  對於樹中的每一個結點,如果其有多個子節點,儲存其第一個子節點的連線,去除其他子節點的連線。 「3」調整位置  對每個結點

森林轉換

由於二叉樹和樹都可以用二叉連結串列作為儲存結構,則以二叉連結串列作為媒介可以匯出樹與二叉樹的一個對應關係,即給定一棵樹,可以找到唯一的一顆二叉樹與之對應。從物理結構上看,樹的孩子兄弟表示法語二叉樹的二叉連結串列表示法相同,即每個結點共有兩個指標,分別指向結點

森林轉換

1、森林轉二叉樹      (1)、把每棵樹轉換為二叉樹      (2)、第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。 轉換規則:兄弟相連,長兄為父,孩子靠左。       2、樹轉二叉樹      (1)、加線。在所有的兄弟

資料結構(轉換與遍歷)

二叉樹的遍歷 先序遍歷(DLR):先遍歷根節點,再遍歷左子樹,最後遍歷右子樹 遍歷結果:ABDHIEJCFG public void PreOrder(Node<T> root)