數據結構--二叉樹的存儲結構

順序存儲表示

以存儲的數據是整型爲例。

// 二叉樹的最大節點數
# define MAX_TREE_SIZE 100
//0號單元存儲根節點
typedef int SqBiTree[MAX_TREE_SIZE];
SqBiTree bt;

一棵二叉樹的邏輯結構如下:

在這裏插入圖片描述

則其順序存儲結構如下:

在這裏插入圖片描述

由於二叉樹不一定都是完全二叉樹,所以希望通過標號來訪問父節點以及兄弟、子節點的話,則必須爲樹添加虛節點。從上面的存儲結構可以看出這樣做的壞處就是會有大量的存儲空間被浪費。

所以一般二叉樹都用鏈式結構進行存儲。

鏈式存儲表示

二叉鏈表

邏輯結構:

在這裏插入圖片描述

節點結構:

在這裏插入圖片描述

三叉鏈表

邏輯結構:

在這裏插入圖片描述

節點結構:

在這裏插入圖片描述


若一個二叉樹含有nn個結點,則它的二叉鏈表中必含有2n2n個指針域, 其中必有n+1n +1個空的鏈域。

證明:

分支數爲n1n - 1,即非空的鏈域有n1n-1個,所以空的鏈域就等於2n(n1)=n+12n - (n-1) = n + 1個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章