1. 程式人生 > >數據結構 二叉樹的基本概念

數據結構 二叉樹的基本概念

info spa 技術分享 一維數組 因此 nbsp color 抽象數據類型 span

二叉樹的定義

一棵二叉樹是結點的一個有限集合,

該集合或者為空,或者是由一個根結點加上兩棵分別被稱為左子樹和右子樹的,互不相交的二叉樹組成。

技術分享圖片

二叉樹的特點是每個結點最多有兩個子女,分別稱為左子女和右子女。

就是說,在二叉樹中不存在度大於2的結點,並且二叉樹的子樹有左右之分,

其子樹的次序不能顛倒,二叉樹是有序樹。

因此,二叉樹有五種不同的形態:空樹,只有根結點,只有左子樹,只有右子樹,左子樹右子樹都有

技術分享圖片

滿二叉樹:深度為k的滿二叉樹是有2^(k-1)個結點的二叉樹。

在滿二叉樹中,每一層的結點都達到了最大個數。

除最底層結點的度為0外,其他各層結點的度都為2.

完全二叉樹:每一個結點都與高度為k的滿二叉樹的編號為1-n的結點一一對應,則稱為完全二叉樹。

特點是:第一層到第k-1層是滿二叉樹,最後一層或者是滿的,或者從右向左連續缺失若幹結點。

二叉樹的性質:

1.在二叉樹的第i (i>=1) 層最多有2^(i-1)個結點

2.深度為k的二叉樹最少有k個結點,最多有2^(k-1)個結點

3.對任何一棵二叉樹,如果其葉結點個數為n0, 度為2的非葉結點的個數為n2,則n0=n2+1

4.具有n個結點的完全二叉樹的深度為 ceil(log2(n+1)) (有的定義為floor(log2(n) +1))

5.如果將一棵具有n個結點的完全二叉樹自頂向下,同一層自左向右編號。順序存入一個一維數組。

則有以下關系:

  若i==1,則結點i為根,無父結點;若i大於1,則結點i的父節點為floor(i/2)

  若2*i<=n,則結點i的左子女為結點2*i

  若2*i+1<=n,則結點i的右子女為結點2*i+1

  若結點的編號i為奇數,且i不等於1,它處於右兄弟位置,則它的左兄弟為i-1

  若結點的編號i為偶數,且i不等於1,它處於左兄弟位置,則它的有兄弟為i+1

  結點i所處的層次,floor(log2i) + 1

二叉樹的抽象數據類型

數據結構 二叉樹的基本概念