順序存儲表示
以存儲的數據是整型爲例。
// 二叉樹的最大節點數
# define MAX_TREE_SIZE 100
//0號單元存儲根節點
typedef int SqBiTree[MAX_TREE_SIZE];
SqBiTree bt;
一棵二叉樹的邏輯結構如下:
則其順序存儲結構如下:
由於二叉樹不一定都是完全二叉樹,所以希望通過標號來訪問父節點以及兄弟、子節點的話,則必須爲樹添加虛節點。從上面的存儲結構可以看出這樣做的壞處就是會有大量的存儲空間被浪費。
所以一般二叉樹都用鏈式結構進行存儲。
鏈式存儲表示
二叉鏈表
邏輯結構:
節點結構:
三叉鏈表
邏輯結構:
節點結構:
若一個二叉樹含有個結點,則它的二叉鏈表中必含有個指針域, 其中必有個空的鏈域。
證明:
分支數爲,即非空的鏈域有個,所以空的鏈域就等於個。