二叉樹(shù)

1、基本概念

二叉樹(shù)(Binary Tree)是每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹(shù)的樹(shù)結(jié)構(gòu)。通常子樹(shù)被稱作“左子樹(shù)”(left subtree)和“右子樹(shù)”(right subtree)。

二叉樹(shù)的特點(diǎn):

二叉樹(shù)不存在度大于2的結(jié)點(diǎn)。

二叉樹(shù)的子樹(shù)有左右之分,次序不能顛倒。

如下圖中,樹(shù)1和樹(shù)2是同一棵樹(shù),但它們是不同的二叉樹(shù)。

二叉樹(shù)

1)、斜樹(shù)

所有的結(jié)點(diǎn)都只有左子樹(shù)的二叉樹(shù)叫左斜樹(shù)。所有的結(jié)點(diǎn)都只有右子樹(shù)的二叉樹(shù)叫右斜樹(shù)。這兩者統(tǒng)稱為斜樹(shù)。

斜樹(shù)每一層只有一個(gè)結(jié)點(diǎn),結(jié)點(diǎn)的個(gè)數(shù)與二叉樹(shù)的深度相同。其實(shí)斜樹(shù)就是線性表結(jié)構(gòu)。

2)、滿二叉樹(shù)

在一棵二叉樹(shù)中,如果所有分支結(jié)點(diǎn)都存在左子樹(shù)和右子樹(shù),并且所有葉子都在同一層上,這樣的二叉樹(shù)稱為滿二叉樹(shù)。

滿二叉樹(shù)具有如下特點(diǎn):

葉子只能出現(xiàn)在最下一層

非葉子結(jié)點(diǎn)的度一定是2

同樣深度的二叉樹(shù)中,滿二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)最多,葉子數(shù)最多。

3)、完全二叉樹(shù)

若設(shè)二叉樹(shù)的高度為h,除第 h 層外,其它各層 (1~h-1) 的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù),第h層有葉子結(jié)點(diǎn),并且葉子結(jié)點(diǎn)都是從左到右依次排布,這就是完全二叉樹(shù)。

完全二叉樹(shù)的特點(diǎn):

葉子結(jié)點(diǎn)只能出現(xiàn)在最下兩層

最下層葉子在左部并且連續(xù)

同樣結(jié)點(diǎn)數(shù)的二叉樹(shù),完全二叉樹(shù)的深度最小

4)、平衡二叉樹(shù)

平衡二叉樹(shù)又被稱為AVL樹(shù)(區(qū)別于AVL算法),它是一棵二叉排序樹(shù),且具有以下性質(zhì):它是一棵空樹(shù)或它的左右兩個(gè)子樹(shù)的高度差的絕對(duì)值不超過(guò)1,并且左右兩個(gè)子樹(shù)都是一棵平衡二叉樹(shù)

2、二叉樹(shù)的性質(zhì)

在二叉樹(shù)的第i層上至多有2^i-1^個(gè)結(jié)點(diǎn)(i>=1)。

深度為k的二叉樹(shù)至多有2^k^-1個(gè)結(jié)點(diǎn)(k>=1)。

對(duì)任何一棵二叉樹(shù)T,如果其終端結(jié)點(diǎn)個(gè)數(shù)為n~0~,度為2的結(jié)點(diǎn)數(shù)為n~2~,則n~0~ = n~2~ + 1。

具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的深度為「log~2~n」+ 1(「x」表示不大于x的最大整數(shù))。

如果對(duì)一棵有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的結(jié)點(diǎn)按層序編號(hào)(從第一層到第「log~2~n」+ 1層,每層從左到右),對(duì)任一結(jié)點(diǎn)i(1≤i≤n)有:

若i=1,則結(jié)點(diǎn)i是二叉樹(shù)的根,無(wú)雙親;如i>1,則其雙親是結(jié)點(diǎn)「i/2」。

如2i>n,則結(jié)點(diǎn)i無(wú)左孩子(結(jié)點(diǎn)i為葉子結(jié)點(diǎn));否則其左孩子是結(jié)點(diǎn)2i。

若2i+1>n,則結(jié)點(diǎn)i無(wú)右孩子;否則其右孩子是結(jié)點(diǎn)2i+1。

3、二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)和遍歷

二叉樹(shù)是一種特殊的樹(shù),它的存儲(chǔ)結(jié)構(gòu)相對(duì)于前面談到的一般樹(shù)的存儲(chǔ)結(jié)構(gòu)要簡(jiǎn)單一些。

①順序存儲(chǔ)結(jié)構(gòu)

②鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)結(jié)構(gòu)和算法--二叉樹(shù)的實(shí)現(xiàn) 幾種二叉樹(shù) 1、二叉樹(shù) 和普通的樹(shù)相比,二叉樹(shù)有如下特點(diǎn): 每個(gè)結(jié)點(diǎn)最多只有兩棵子...
    sunhaiyu閱讀 6,511評(píng)論 0 14
  • 編程中我們會(huì)遇到多少挫折?表放棄,沙漠盡頭必是綠洲。 學(xué)習(xí)二叉樹(shù)的意義 由于二叉樹(shù)的知識(shí)更傾向于理論,所以我們?cè)趯?shí)...
    神經(jīng)騷棟閱讀 6,272評(píng)論 5 57
  • 樹(shù)和二叉樹(shù) 1、樹(shù)的定義 樹(shù)(Tree)是由一個(gè) 或 多個(gè)結(jié)點(diǎn) 組成的有限集合T,且滿足: ①有且僅有一個(gè)稱為根的...
    利伊奧克兒閱讀 1,394評(píng)論 0 1
  • 樹(shù)的概述 樹(shù)是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹(shù)與前面介紹的線性表,棧,隊(duì)列等線性結(jié)構(gòu)不同,樹(shù)是一種非線性結(jié)構(gòu) 1.樹(shù)的定...
    Jack921閱讀 4,475評(píng)論 1 31
  • 四、樹(shù)與二叉樹(shù) 1. 二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu) 二叉樹(shù)的順序存儲(chǔ)就是用數(shù)組存儲(chǔ)二叉樹(shù)。二叉樹(shù)的每個(gè)結(jié)點(diǎn)在順序存儲(chǔ)中都有...
    MinoyJet閱讀 1,574評(píng)論 0 7