樹與二叉樹

2021-09-28 14:35:37 字數 2170 閱讀 8533

二叉樹的定義及其主要特徵:1.二叉樹的定義,二叉樹是一種樹形結構,其特點是每個結點至多只有兩顆子樹(即二叉樹中不存在度大於2的結點),並且,二叉樹的子樹有左右之分 ,其次序不能任意顛倒。

與樹相似,二叉樹也以遞迴的形式定義。二叉樹是n個結點的有限集合:1.或者為空二叉樹,即n=0.2.或者由乙個根結點和兩個互不相交的被稱為左子樹和右子樹組成。左子樹和右子樹又分別是一顆二叉樹。 二叉樹 是有序樹,若將其左,右子樹顛倒,就成為另一顆不同的二叉樹。即使樹中結點只有一顆子樹,也要區分它是左子樹還是右子樹。二叉樹的5種形態如圖所示。

二叉樹與度為2的有序樹的區別;

1.度為2的樹至少有三個結點,而二叉樹可以為空。

2.度為2的有序樹的孩子結點的左右次序是相對於另一孩子結點而言的,如果某個結點只有乙個孩子結點,這個孩子結點就無須區分其左右次序,而而二叉樹無論孩子數是否為2,均無需確定其左右次序,也就是說二叉樹的結點次序不是相對於另一結點而言,二是確定的。

幾個特殊的二叉樹:

可以對滿二叉樹按層序編號,約定編號從根結點起,自上而下,自左向右,這樣每個結點對應的乙個編號,對於編號為i的結點起,自上而下,自左向右。這樣每乙個結點都對應乙個編號,對於編號為i的結點,如果有雙親,其雙親為i/2,如果有左孩子,則左孩子為2i,如果有右孩子,則右孩子為2i+1.

完全二叉樹,設乙個高度為h,有n個結點的二叉樹,當且僅當其每乙個結點都與高度為h的滿二叉樹中編號為1-n的結點,稱為完全二叉樹,這種樹的特點如下:1.若i<=n/2,則結點為分支結點,否則為葉子結點。2.葉子結點只可能在層次最大的兩層上出現,對於最大層次中的葉子結點,都依次排序在該層最左邊的位置上。3.如果有度為1的結點,只可能有乙個,且該結點只有左孩子而無右孩子。4.按層序編號後,一旦出現某個結點為葉子結點或者只有左孩子二無右孩子。5.若n為奇數,則每個分支結點都有左子女和右子女,若n為偶數,則編號最大的分支結點(編號為n/2)只有左子女,沒有右子女,其餘分支結點左,右子女都有。

3.二叉排序樹:一顆二叉樹或者空二叉樹,或者是具有如下性質的二叉樹:左子樹上所有結點的關鍵字均小於根結點的關鍵字,右子樹上所有的結點的關鍵字均大於根結點的關鍵字,左子樹和右子樹又各是一顆二叉排序樹。

4.平衡二叉樹,書上任一結點的左子樹和右子樹的深度只差不超過1.

3.二叉樹的性質,非空二叉樹上葉子結點等於度為2的結點數加1,即n0=n2+1。證明:設度為0,1,2的結點個數分別為n0,n1,n2,再看二叉樹中的分支數,除根結點外,其餘結點都有乙個分支進入,設b為分支總數,則n=b+1,由於這些分支是由度為1和2的結點射出的,所以又有b=n1+2n2.

二叉樹的儲存結構,順序儲存結構,二叉樹的順序結構儲存結構就是用一組位址連續的儲存單元依次自上而下,自左向右儲存完全二叉樹上的結點元素,即將完全二叉樹上編號為i的結點元素儲存在某個陣列下標為i-1的分量中,然後通過一些方法確定結點在邏輯上的父子和兄弟關係。

但對於一般的二叉樹,為了讓陣列下標能反映二叉樹中結點之間的邏輯關係,只能新增一些並不存在的空結點讓每乙個結點與完全二叉樹的結點相對照,再儲存到一維陣列的相應的分量中,然而,在最壞的情況下,乙個高度為h且只有乙個h結點的單支樹卻需要佔據接近。。。個儲存單元,二叉樹的順序儲存如圖所示,其中0表示並不存在的空結點。

注意:這種儲存結構顯然要從陣列下標1開始儲存樹中的結點,如果從陣列下標0開始儲存,則不滿足性質4的描述,這是考生在書寫程式的時候容易忽略的。

注意區別 樹的順序儲存結構與二叉樹的順序儲存結構。在樹的順序儲存結構中,陣列下標代表結點的編號,下標上所存在的內容指示了結點之間的關係。而在二叉樹的順序儲存結構中,陣列下標既代表了結點的編號,也指示了樹中各結點之間的關係,這種關係借助完全二叉樹的性質反映,當然,二叉樹屬於樹,因此二叉樹都可以用樹的儲存結構來儲存,但是樹卻不能用二叉樹的儲存結構來儲存。

鏈式儲存結構,由於順儲存空間對空間利用率較低,因此,一般二叉樹都採用鏈式儲存結構,鏈式結構是指用乙個鍊錶來儲存乙個二叉樹,而二叉樹中每乙個結點用鍊錶的乙個鏈結點來儲存,在二叉樹中,結點結構通常包括若干資料域與若干個指標域即若干個指標域。二叉鍊錶至少包含三個域,資料域data,左指標域,和右指標域。

常用的二叉樹表的儲存結構,而在實際不同的應用中,還可以增加某些指標與如增加指向父結點的指標,則變成三叉鍊錶的儲存結構。

二叉樹鏈式儲存結構描述如下,使用不同的儲存結構,實現而擦函式操作的演算法也會不同,因此,要根據實際應用的場合來選擇合適的儲存空間,在含有n個結點的二叉鍊錶中含有n+1個空鏈域,在下一節中,我們將利用這些空鏈域來組成另一種鍊錶結構-線索鍊錶

二叉樹 滿二叉樹與完全二叉樹

二叉樹 binary tree 是n n 0 個元素的有限集合,該集合為空或者為由乙個稱為 根 的元素及兩個不相交的 被分別稱為左子樹和右子樹的二叉樹組成 二叉樹的基本特點 每個結點最多有兩棵子樹 左子樹和右子樹是有順序的,且不可顛倒 圖一1 結點 二叉樹中的每乙個元素都稱為結點。通常二叉樹的許多名...

樹與二叉樹

樹是一類重要的非線性資料結構,是以分支關係定義的層次結構 定義 樹 tree 是n n 0 個結點的有限集t,其中 n 0時為空樹 n 0時,有且僅有乙個特定的結點,稱為樹的根 root 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,稱為根的...

樹與二叉樹

建立 先序二叉樹,中序二叉樹,後序二叉樹。給定兩種遍歷序列 前序中序或後序中序 重塑二叉樹 遍歷 判斷乙個節點是否存在於二叉樹中 二叉樹的遍歷 先序,中序,後序 遞迴 非遞迴 層次遍歷 從上到下或從下到上列印 zigzag遍歷方式層次遍歷 二叉樹性質 二叉樹中葉子節點的個數 二叉樹第k層節點數目 二...