你們好,今天繼續學習樹的數據結構。在上一章,咱們講樹的孩子兄弟表示法時,提到了二叉樹。今天,咱們就來學習二叉樹的相關性質。數據結構
1、二叉樹定義:學習
二叉樹(Binary Tree):n(n≥0)個結點的有限集合,該集合或者爲空集(爲空時,稱爲空樹),或者由一個根結點、兩棵互不相交、稱爲根結點的左子樹、右子樹的二叉樹組成。(Note:你們注意了,咱們在給出二叉樹定義時,咱們利用了遞歸概念。就是先給出二叉樹概念,再用二叉樹概念去解釋二叉樹。遞歸是一種很重要的方法,在數據結構中是很重要的,咱們會在後面章節中提到。)spa
咱們看圖來理解一下二叉樹:3d
2、二叉樹的特色:blog
一、二叉樹中的結點度數,必定小於等於2。(根據二叉樹定義,由一個根結點、兩棵互不相交的稱爲根結點左子樹、右子樹的二叉樹組成。note:度數不是隻能是2,是至可能是2)遞歸
二、左子樹與右子樹是有順序的,次序不能顛倒。get
三、即便樹中只有一個子樹,也要區分左子樹、右子樹。it
3、二叉樹具備的5種基本形態:二叉樹
1.空二叉樹方法
2.只有根結點
3.只有左子樹的二叉樹
4.只有右子樹的二叉樹
5.既有左子樹又有右子樹
4、特殊二叉樹:
1.斜二叉樹:
既然是斜二叉樹,就必定要有斜度。
上面這兩個圖,就是斜二叉樹。(note:看着是否是挺像線性表。其實,線性表就是二叉樹的特殊表現形式)
2.滿二叉樹:
顧名思義,既然是滿二叉樹,就是每一個結點都具有兩個子樹。如圖:
若是二叉樹中,每一個結點都具有左子樹、右子樹,而且全部葉子結點都在同一層中,這樣的二叉樹稱爲滿二叉樹。
滿二叉樹的特色:
a.葉子結點只能出如今最後一層,若是不是,就不能達到滿二叉樹。
b.非葉子結點的度數只能爲2,若是不是,就會出現「缺胳膊少腿」的現象。
c.在相同深度的二叉樹中,滿二叉樹的結點最多,葉子結點最多。
3.徹底二叉樹:
對一棵具備n個結點的二叉樹,按着層序編號,如編號爲i(1≤i≤n)的結點位置,與同等深度的滿二叉樹中編號爲i結點位置相同,則稱這樣的二叉樹爲徹底二叉樹。 徹底二叉樹很差理解,咱們看一下圖:
上面左圖,是一棵徹底二叉樹,右圖是一棵滿二叉樹。咱們在內心給右圖滿二叉樹按層序編號。經過左圖與右圖的對比,咱們發現,左圖中的任一結點,在右圖中都有與之相對應的結點。
下面再給出幾張不是徹底二叉樹的圖:
徹底二叉樹特色:
a.若是結點度數爲1,那麼只能是左子樹。(不存在只有右子樹結點)
b.葉子結點只能出如今最下兩層。
c.最下層的葉子結點,必定集中在左部連續位置。
d.倒數兩層,若是有葉子結點,必定集中在右部連續位置。
e.一樣結點數的樹,徹底二叉樹的深度最小。
5、二叉樹性質:
接下來,咱們來學習一下二叉樹的性質。在實際應用中,都是經過二叉樹的性質來操做的。二叉樹的性質,是很是重要的概念。
a.在二叉樹中,第i層的結點總數最多2^(i-1)個
第一層: 1=2^(1-1)=2^0=1
第二層:2=2^(2-1)=2^1=2
第三層:4=2^(3-1)=2^2=4
……
……
b.深度爲k的二叉樹,結點總數等於2^k-1
深度爲1:1=2^1-1=1
深度爲2:3=2^2-1=3
深度爲3:7=2^3-1=7
……
……
c.若是n0是葉子結點,n2是度數爲2的結點。則n0=n2+1.
二叉樹中,除了葉子結點就是度數爲一、度數爲2的結點。咱們假設度數爲1的結點爲n一、度數爲2的結點爲n二、葉子結點爲n0.則樹中結點總數爲n=n0+n1+n2.咱們觀察上圖,研究一下節點之間的鏈接線。由於根結點只有出去的線,沒有進入的線。因此總線+1就是結點總數,n1+2n2+1=n0+n1+n2 n0=n2+1
d.具備n個結點數的徹底二叉樹的深度爲[log2N]+1([x]表示不大於x的最大整數)。
e.若是對一棵有n個結點的徹底二叉樹(其深度爲[log2N])的結點按層序編號(從第一層到[log2N]+1層,每層從左到右),對任一結點i(1≤i≤n)有:
1.若是i=1,則結點i是二叉樹的根,無雙親;若是i>1,則雙親爲[i/2].
2.若是2i>n,則結點i無左孩子(結點i爲葉子結點);不然其左孩子是結點2i.
3.若是2i+1>n,則結點i無右孩子;不然其右孩子是結點2i+1
咱們將在下一章講解二叉樹的存儲結構