1. 程式人生 > >二叉樹的順序儲存原理及實現過程

二叉樹的順序儲存原理及實現過程

二叉樹的順序儲存,實際上就是使用陣列儲存二叉樹。

使用陣列儲存二叉樹的實現思想是將二叉樹從根節點按照層次順序依次儲存在陣列中,但需要注意的是,此方式只適用於完全二叉樹,如果要使用陣列儲存普通二叉樹,需要提前將該二叉樹轉化為完全二叉樹。

完全二叉樹,即二叉樹除了最後一層節點外,其餘各節點都既有左節點和右節點,最後一層的節點滿足從左到右依次分佈,則此二叉樹為完全二叉樹。普通二叉樹轉化為完全二叉樹的方法是將不滿足條件的節點新增左孩子或右孩子(節點儲存的資料為一個特殊值,例如 0),令其整體結構上表現為一個完全二叉樹。

圖 1 完全二叉樹
例如,圖 1(A) 和 (B) 都是二叉樹,但圖 1(A) 是完全二叉樹,(B) 由於最後一層不符合從左往右依次分佈的要求,所以不是完全二叉樹,只是一個普通的二叉樹。

因此,儲存圖 1(A) 時,陣列中儲存為:


如果圖 1(B) 也採取順序儲存的方式,就需要將其轉化成完全二叉樹,其轉化過程如下:

圖 2 普通二叉樹轉完全二叉樹
圖 2 中,轉化後的二叉樹中,資料元素 0 表示此位置沒有資料。將轉化後的完全二叉樹按照層次並從左到右的次序儲存到陣列中: