資料結構 9 樹 三 ( 二叉樹儲存結構 )

2021-09-21 18:51:31 字數 1095 閱讀 1590

之前已經談過了樹的儲存結構,並且說到順序儲存對樹這一種一對多的關係的結構實現起來比較困難。但是二叉樹是一種特殊的樹,由於它的特殊性,使得用順序儲存結構也可以實現。

二叉樹的順序儲存結構就是用一維陣列儲存二叉樹中的結點,並且結點的儲存位置,也就是陣列的下標,要能體現結點之間的邏輯關係,如雙親與孩子的關係,左右兄弟的關係等。

先來看完全二叉樹的順序儲存,一棵完全二叉樹如圖所示:

將這顆二叉樹存入到陣列中,相應的下表對應其同樣的位置,如圖:

由於二叉樹嚴格的定義,所以用順序儲存結構也可以表現出二叉樹的結構來。

當然對於一般的二叉樹,儘管層序編號不能反映邏輯關係,但是可以將其按完全二叉樹編號,只不過,把不存在的結點設定為^就可以。下圖淺色部分表示不存在:

考慮一種極端的情況,一棵深度為k的右斜樹,他只有k個結點,卻需要分配2的k次-1個儲存單元,造成明顯的浪費,如圖,所以順序儲存結構一般只用於完全二叉樹:

既然順序儲存適用性不強,就要考慮鏈式儲存結構。

二叉樹最多有兩個孩子,所以為他設計乙個資料域和兩個指標域是最合適不過的,我們把這樣的鍊錶叫做二叉鍊錶。

結構圖如下:

其中data是資料域,lchild和rchild都是指標域,分別存放指向左孩子和右孩子的指標。

資料結構 樹(三) 二叉查詢樹

二叉查詢樹的性質 例子二叉查詢樹 bst 是一種特殊的二叉樹,又稱為排序二叉樹 二叉搜尋樹 二叉排序樹。二叉查詢樹實際是一棵資料域有序的二叉樹。二叉查詢樹的遞迴定義如下 要麼二叉查詢樹是一棵空樹。要麼二叉查詢樹由根結點 左子樹 右子樹組成,其中左子樹和右子樹都是二叉查詢樹,且左子樹上所有結點的資料域...

資料結構 二叉樹(三)二叉樹的深度

給定一棵二叉樹,求該二叉樹的深度 二叉樹深度定義 從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的節點個數為樹的深度 1.1輸入第一行是乙個整數n,表示二叉樹的結點個數。二叉樹結點編號從1到n,根結點為1,n 10 接下來有n行,依次對應二叉樹的n個節點。每行有兩個整數,分...

資料結構之樹(三) 二叉樹定義和性質

二叉樹 binary tree 是n n 0 個結點的有限集合,該集合或者為空集 稱為空二叉樹 或者由乙個根結點和倆棵互不相交的,分別稱為根結點的左子樹和右子樹的二叉樹組成。如圖 二叉樹的特點 1.每個結點最多有倆棵子樹,所以二叉樹中不存在度大於2的結點。2.左子樹和右子樹是有順序的,次序不能任意顛...