一、順序儲存結構
二叉樹的順序儲存結構是指用一組位址連續的儲存單元依次自上而下、自左至右儲存完全二叉樹上的結點元素,即將完全二叉樹上編號為i的結點元素儲存在某個陣列下標為i-1的分量中,然後通過一些方法確定結點在邏輯上的父子和兄弟關係。
完全二叉樹和滿二叉樹採用順序儲存比較合適,節省空間且陣列元素下標值能確定結點在二叉樹中的位置和結點之間的關係。但對於一般二叉樹,則需要新增一些並不存在的空結點,所以效率並不高。
順序儲存示意圖如下:
注意:
這種儲存結構顯然要從陣列下標1開始儲存樹中的結點。同時也要注意區別樹的順序儲存結構與二叉樹的順序儲存結構。在樹的順序儲存結構中,陣列下標代表結點的編號,下標上所存的內容指示了結點之間的關係。而在二叉樹的順序儲存結構中,陣列下標既代表了結點的編號,又指示了樹中各結點之間的關係。
二叉樹屬於樹,因此二叉樹都可以用樹的儲存結構來儲存,但樹卻不能都用二叉樹的儲存結構來儲存。
二、鏈式儲存結構
鏈式結構是指用乙個鍊錶來儲存一棵二叉樹,二叉樹中的每個結點用鍊錶的乙個鏈結點來儲存。
在二叉樹中,結點結構通常包括若干資料域和若干指標域。二叉鍊錶至少包含3個域:資料域data、左指標域lchild和右指標域rchild,若下圖所示:
常用的二叉鍊錶儲存結構如下圖所示:
二叉樹的鏈式儲存結構描述如下:
typedef struct bitnodebitnode, *bitree;
注意:在含有n個結點的二叉鍊錶中,含有n+1個空鏈域。使用不同的儲存結構時,實現二叉樹操作的演算法也會不同,因此要根據實際應用場合選擇合適的儲存結構。 二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...