樹 二叉樹 森林 相互轉換

2021-10-20 18:28:26 字數 1546 閱讀 6379

一.樹————>二叉樹

由於二叉樹是有序的,為了避免混淆,對於無序樹,我們約定樹中的每個結點的孩子結點按從左到右的順序進行編號

將樹轉換成二叉樹的步驟

(1)加線 就是在所有兄弟結點之間加一條連線

(2)抹線 就是對樹中的每個結點,只保留他與第乙個孩子結點之間的連線,刪除它與其它孩子結點之間的連線

(3)旋轉 就是以樹的根結點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明

二.森林————>二叉樹

森林是由若干棵樹組成,可以將森林中的每棵樹的根結點看作是兄弟,由於每棵樹都可以轉換為二叉樹,所以森林也可以轉換為二叉樹

將森林轉換為二叉樹的步驟

(1)先把每棵樹轉換為二叉樹

(2)第一棵二叉樹不動,從第二棵二叉樹開始,依次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子結點,用線連線起來 當所有的二叉樹連線起來後得到的二叉樹就是由森林轉換得到的二叉樹

三.二叉樹————>樹

二叉樹轉換為樹是樹轉換為二叉樹的逆過程

(1)若某結點的左孩子結點存在,將左孩子結點的右孩子結點、右孩子結點的右孩子結點……都作為該結點的孩子結點,將該結點與這些右孩子結點用線連線起來;

(2)刪除原二叉樹中所有結點與其右孩子結點的連線

(3)整理(1)和(2)兩步得到的樹 使之結構層次分明

四.二叉樹————>森林

判斷一棵二叉樹能夠轉換成一棵樹還是森林 只要看這棵二叉樹的根結點有沒有右孩子有就是森林 沒有就是一棵樹

步驟如下:

(1)先把每個結點與右孩子結點的連線刪除,得到分離的二叉樹

(2)把分離後的每棵二叉樹轉換為樹

(3)整理第(2)步得到的樹,使之規範,這樣得到森林

五.總結

根據樹與二叉樹的轉換關係以及二叉樹的遍歷定義可以推知,樹的先序遍歷與其轉換的相應的二叉樹的先序遍歷的結果序列相同;樹的後序遍歷與其轉換的二叉樹的中序遍歷的結果序列相同;樹的層序遍歷與其轉換的二叉樹的後序遍歷的結果序列相同。由森林與二叉樹的轉換關係以及森林與二叉樹的遍歷定義可知,森林的先序遍歷和中序遍歷與所轉換得到的二叉樹的先序遍歷和中序遍歷的結果序列相同

森林 樹與二叉樹相互轉換

1 森林轉二叉樹 1 把每棵樹轉換為二叉樹 2 第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。轉換規則 兄弟相連,長兄為父,孩子靠左。2 樹轉二叉樹 1 加線。在所有的兄弟結點之間加一條線。2 去線。樹中的每個結點,只保留它與第乙個孩...

樹 森林與二叉樹相互轉換

本文參考自 大話資料結構 加線,在所有兄弟結點之間加一條連線 去線。對樹中每個結點,只保留它與第乙個孩子結點的連線,刪除它與其他孩子結點之間的連線 層次調整。以樹的根結點為軸心,將整棵樹順時針旋轉一定的角度,使之結構層次分明。注意第乙個孩子是二叉樹的左孩子,兄弟轉換過來的孩子是結點的右孩子。森林由若...

森林 樹與二叉樹相互轉換

1 森林轉二叉樹 1 把每棵樹轉換為二叉樹 2 第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。轉換規則 兄弟相連,長兄為父,孩子靠左。2 樹轉二叉樹 1 加線。在所有的兄弟結點之間加一條線。2 去線。樹中的每個結點,只保留它與第乙個孩...