什麼是二叉樹

2021-10-25 03:10:24 字數 1779 閱讀 3918

**:什麼是二叉樹(包含滿二叉樹和完全二叉樹)

通過《樹的儲存結構》一節的學習,我們了解了一些樹儲存結構的基本知識。本節將給大家介紹一類具體的樹結構——二叉樹。

簡單地理解,滿足以下兩個條件的樹就是二叉樹:

本身是有序樹;

樹中包含的各個節點的度不能超過 2,即只能是 0、1 或者 2;

例如,圖 1a) 就是一棵二叉樹,而圖 1b) 則不是。

圖 1 二叉樹示意圖

經過前人的總結,二叉樹具有以下幾個性質:

二叉樹中,第 i 層最多有 2i-1 個結點。

如果二叉樹的深度為 k,那麼此二叉樹最多有 2k-1 個結點。

二叉樹中,終端結點數(葉子結點數)為 n0,度為 2 的結點數為 n2,則 n0=n2+1。

性質 3 的計算方法為:對於乙個二叉樹來說,除了度為 0 的葉子結點和度為 2 的結點,剩下的就是度為 1 的結點(設為 n1),那麼總結點 n=n0+n1+n2。

同時,對於每乙個結點來說都是由其父結點分支表示的,假設樹中分枝數為 b,那麼總結點數 n=b+1。而分枝數是可以通過 n1 和 n2 表示的,即 b=n1+2*n2。所以,n 用另外一種方式表示為 n=n1+2*n2+1。

兩種方式得到的 n 值組成乙個方程組,就可以得出 n0=n2+1。

二叉樹還可以繼續分類,衍生出滿二叉樹和完全二叉樹。

如果二叉樹中除了葉子結點,每個結點的度都為 2,則此二叉樹稱為滿二叉樹。

圖 2 滿二叉樹示意圖

如圖 2 所示就是一棵滿二叉樹。

滿二叉樹除了滿足普通二叉樹的性質,還具有以下性質:

滿二叉樹中第 i 層的節點數為 2n-1 個。

深度為 k 的滿二叉樹必有 2k-1 個節點 ,葉子數為 2k-1。

滿二叉樹中不存在度為 1 的節點,每乙個分支點中都兩棵深度相同的子樹,且葉子節點都在最底層。

具有 n 個節點的滿二叉樹的深度為 log2(n+1)。

如果二叉樹中除去最後一層節點為滿二叉樹,且最後一層的結點依次從左到右分布,則此二叉樹被稱為完全二叉樹。

圖 3 完全二叉樹示意圖

如圖 3a) 所示是一棵完全二叉樹,圖 3b) 由於最後一層的節點沒有按照從左向右分布,因此只能算作是普通的二叉樹。

完全二叉樹除了具有普通二叉樹的性質,它自身也具有一些獨特的性質,比如說,n 個結點的完全二叉樹的深度為 ⌊log2n⌋+1。

⌊log2n⌋ 表示取小於 log2n 的最大整數。例如,⌊log24⌋ = 2,而 ⌊log25⌋ 結果也是 2。

對於任意乙個完全二叉樹來說,如果將含有的結點按照層次從左到右依次標號(如圖 3a)),對於任意乙個結點 i ,完全二叉樹還有以下幾個結論成立:

當 i>1 時,父親結點為結點 [i/2] 。(i=1 時,表示的是根結點,無父親結點)

如果 2*i>n(總結點的個數) ,則結點 i 肯定沒有左孩子(為葉子結點);否則其左孩子是結點 2*i 。

如果 2*i+1>n ,則結點 i 肯定沒有右孩子;否則右孩子是結點 2*i+1 。

本節介紹了什麼是二叉樹,以及二叉樹的性質,同時還介紹了滿二叉樹和完全二叉樹以及各自所特有的性質,初學者需理解並牢記這些性質,才能更熟練地使用二叉樹解決實際問題。

什麼是線索二叉樹?

定義 乙個二叉樹通過如下的方法 穿起來 所有原本為空的右 孩子 指標改為指向該節點在中序序列中的後繼,所有原本為空的左 孩子 指標改為指向該節點的中序序列的前驅。線索二叉樹能線性地遍歷二叉樹,從而比遞迴的中序遍歷更快。使用線索二叉樹也能夠方便的找到乙個節點的父節點,這比顯式地使用父親節點指標或者棧效...

什麼是二叉樹?以及二叉樹如何遍歷?

像現實當中的樹一樣,需要把現實當中的樹反過來看。樹根 4偏移 左子樹 0偏移 右子樹 8偏移 樹根 樹根 左子樹 右子樹 左子樹 右子樹 樹根 樹根 樹根 樹根 左子樹 右子樹 左子樹 右子樹 左子樹 右子樹 左子樹 右子樹 注 樹根一般是 4偏移 左子樹是 0偏移 右子樹是 8偏移 左子樹又能成為...

判斷二叉樹是否是平衡二叉樹

二叉樹的節點定義為 public class treenode 二叉樹的深度 根節點到葉節點的最長路徑長度 平衡二叉樹 二叉樹中任一節點的左右子樹的深度相差不超過1 遞迴的方法 如下 public boolean isbalanced treenode root intleft getheight ...