二叉樹的儲存表示與實現

2021-07-03 22:54:02 字數 1302 閱讀 7146

二叉樹的順序儲存

完全二叉樹的儲存可以按照從上到下,從左到右的順序依次儲存在一維陣列中。完全二叉樹的順序儲存如圖所示:

如果按照從上到下,從左到右的順序把非完全二叉樹也同樣的編號,將結點依次存放在一維陣列中,為了能夠正確反映二叉樹中結點之間的邏輯關係,需要在一維陣列中將二叉樹中不存在的結點位置空出。

順序儲存對於完全二叉樹來說是比較適合的,因為採用順序儲存能夠節省記憶體單元,並能夠利用公式得到每個結點的儲存位置。但是,對於非完全二叉樹來說,這種儲存方式會浪費記憶體空間。

二叉樹的鏈式儲存

在二叉樹中,每乙個結點有乙個雙親結點和兩個孩子結點。從一棵二叉樹的根結點開始,通過結點的左右孩子位址就可以找到二叉樹的每乙個結點。因此二叉樹的鏈式儲存結構包括三個域:資料域,左孩子指標域和右孩子指標域。其中,資料域存放結點的值,左孩子指標域指向左孩子結點,右孩子指標域指向右孩子結點。這種鏈式儲存結構稱為二叉樹鍊錶儲存結構

如果二叉樹採用二叉鍊錶儲存結構表示

有時為了方便找到結點的雙親結點,在二叉鍊錶的儲存結構中增加以指向雙親結點的指標域parent,這種儲存結構稱為三叉鍊錶結點儲存結構。

通常情況下,二叉樹採用二叉鍊錶進行表示。二叉鍊錶儲存結構的型別定義如下:

typedef struct node

*bitree,bitnode;

二叉樹的表示

二叉鏈表示法 struct bittree typedef struct bittree bitnode typedef struct bittree bitreee int main void include include include 第二種表示方法 三叉鍊錶 三叉鍊錶 typedef st...

二叉樹的遍歷 二叉樹遍歷與儲存

在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...

非二叉樹轉二叉樹的表示法

樹的儲存結構,詳細 分析在 秦玉平 馬靖善所編的資料結構 第三版 p137 142 include define max 100 typedef char elemtype 雙親表示法 typedef structptnode typedef structptree 孩子雙親表示法,若需要孩子鍊錶表...