數(shù)據(jù)結(jié)構(gòu)與算法 二叉樹

最近重新回顧了數(shù)據(jù)結(jié)構(gòu)中的樹,樹是一種非線性數(shù)據(jù)結(jié)構(gòu)程拭,其概念也不少。大家在初次接觸樹的時(shí)候棍潘,可能覺得它很難恃鞋;之所產(chǎn)生這種感覺主要是由于樹有一大堆陌生的概念、性質(zhì)等內(nèi)容亦歉。而當(dāng)我真正的實(shí)現(xiàn)了二叉樹再回過(guò)頭來(lái)看它的相關(guān)概念和性質(zhì)的時(shí)候恤浪,覺得原來(lái)它是如此的簡(jiǎn)單!

因此肴楷,建議在學(xué)習(xí)二叉樹的時(shí)候:先對(duì)二叉樹基本的概念水由、性質(zhì)有個(gè)基本了解,遇到難懂的知識(shí)點(diǎn)赛蔫,可以畫圖來(lái)幫助理解砂客;在有個(gè)基本的概念之后直秆,再親自動(dòng)手實(shí)現(xiàn)二叉查找樹(這一點(diǎn)至關(guān)重要!);最后再回過(guò)頭來(lái)總結(jié)一下二叉樹的理論知識(shí)時(shí)鞭盟,你會(huì)發(fā)現(xiàn)其實(shí)一點(diǎn)不難圾结!

而這一篇文章主要講各種樹的性質(zhì)和定義.

一:樹的介紹

1:樹的定義

樹是一種數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個(gè)有限節(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合齿诉,把它叫做“樹”是因?yàn)樗雌饋?lái)像一棵倒掛的樹筝野,也就是說(shuō)它是根朝上,而葉朝下的粤剧。它具有以下的特點(diǎn):

1:每個(gè)節(jié)點(diǎn)有零個(gè)或者多個(gè)子節(jié)點(diǎn)

2:沒有父節(jié)點(diǎn)的節(jié)稱為根節(jié)點(diǎn)

3:每一個(gè)非根節(jié)點(diǎn)有且只有一個(gè)父節(jié)點(diǎn)

4:除了根節(jié)點(diǎn)之外,每一個(gè)子節(jié)點(diǎn)可以分為多個(gè)不相交的子樹

2:樹的基本術(shù)語(yǔ)

若一個(gè)結(jié)點(diǎn)有子樹歇竟,那么該結(jié)點(diǎn)稱為子樹根的"雙親",子樹的根是該結(jié)點(diǎn)的"孩子"抵恋。有相同雙親的結(jié)點(diǎn)互為"兄弟"焕议。一個(gè)結(jié)點(diǎn)的所有子樹上的任何結(jié)點(diǎn)都是該結(jié)點(diǎn)的后裔。從根結(jié)點(diǎn)到某個(gè)結(jié)點(diǎn)的路徑上的所有結(jié)點(diǎn)都是該結(jié)點(diǎn)的祖先弧关,以下圖為例:

結(jié)點(diǎn)的度:結(jié)點(diǎn)擁有的子樹的數(shù)目盅安,圖中結(jié)點(diǎn)c的度為2。 葉子:度為零的結(jié)點(diǎn)世囊,圖中D别瞭、E、F都是葉子結(jié)點(diǎn) 樹的度:樹中結(jié)點(diǎn)的最大的度株憾,圖中結(jié)點(diǎn)c的度最大為2蝙寨,因此樹的度為2。

層次:根結(jié)點(diǎn)的層次為1嗤瞎,其余結(jié)點(diǎn)的層次等于該結(jié)點(diǎn)的雙親結(jié)點(diǎn)的層次加1墙歪。 樹的高度:樹中結(jié)點(diǎn)的最大層次,圖中樹的高度為3贝奇。 無(wú)序樹:如果樹中結(jié)點(diǎn)的各子樹之間的次序是不重要的虹菲,可以交換位置。 有序樹:如果樹中結(jié)點(diǎn)的各子樹之間的次序是重要的, 不可以交換位置弃秆。 森林:0個(gè)或多個(gè)不相交的樹組成届惋。對(duì)森林加上一個(gè)根,森林即成為樹菠赚;刪去根,樹即成為森林郑藏。

二:二叉樹的介紹

1:二叉樹的定義

二叉樹是每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu)衡查。它有五種基本形態(tài):二叉樹可以是空集;根可以有空的左子樹或右子樹必盖;或者左拌牲、右子樹皆為空俱饿。

2:二叉樹性質(zhì)

①性質(zhì)1:二叉樹第i層上的結(jié)點(diǎn)數(shù)目最多為2{i-1}(i≥1)。

證明:下面用"數(shù)學(xué)歸納法"進(jìn)行證明塌忽。 (01) 當(dāng)i=1時(shí)拍埠,第i層的節(jié)點(diǎn)數(shù)目為2{i-1}=2{0}=1,命題成立土居。

(02) 假設(shè)當(dāng)i>1枣购,第i層的節(jié)點(diǎn)數(shù)目為2{i-1}。這個(gè)是根據(jù)第一步推斷出來(lái)的擦耀! 下面根據(jù)這個(gè)假設(shè)棉圈,推斷出"第(i+1)層的節(jié)點(diǎn)數(shù)目為2{i}"即可。由于二叉樹的每個(gè)結(jié)點(diǎn)至多有兩個(gè)孩子眷蜓,故"第(i+1)層上的結(jié)點(diǎn)數(shù)目" 最多是 "第i層的結(jié)點(diǎn)數(shù)目的2倍"分瘾。即,第(i+1)層上的結(jié)點(diǎn)數(shù)目最大值=2×2{i-1}=2{i}吁系。故假設(shè)成立铆惑,原命題得證纤房!

性質(zhì)2:深度為k的二叉樹至多有2{k}-1個(gè)結(jié)點(diǎn)(k≥1)。

證明:在具有相同深度的二叉樹中,當(dāng)每一層都含有最大結(jié)點(diǎn)數(shù)時(shí)棉饶,結(jié)點(diǎn)數(shù)最多。利用"性質(zhì)1"可知面哼,深度為k的二叉樹的結(jié)點(diǎn)數(shù)至多為:20+21+…+2k-1=2k-1歌殃。故原命題得證!

性質(zhì)3:包含n個(gè)結(jié)點(diǎn)的二叉樹的高度至少為log2(n+1)辞嗡。

證明:根據(jù)"性質(zhì)2"可知捆等,高度為h的二叉樹最多有2{h}–1個(gè)結(jié)點(diǎn)。反之续室,對(duì)于包含n個(gè)節(jié)點(diǎn)的二叉樹的高度至少為log2(n+1)栋烤。

性質(zhì)4:二叉樹中,設(shè)葉子結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2挺狰,則n0=n2+1明郭。

證明:因?yàn)槎鏄渲兴薪Y(jié)點(diǎn)的度數(shù)均不大于2,所以有等式一丰泊。

n=n0+n1+n2(等式一)

另一方面薯定,0度結(jié)點(diǎn)沒有孩子,1度結(jié)點(diǎn)有一個(gè)孩子瞳购,2度結(jié)點(diǎn)有兩個(gè)孩子话侄,故二叉樹中孩子結(jié)點(diǎn)總數(shù)是:n1+2n2。此外,只有根不是任何結(jié)點(diǎn)的孩子年堆。故二叉樹中的結(jié)點(diǎn)總數(shù)又可表示為等式二吞杭。

n=n1+2n2+1(等式二) 由(等式一)和(等式二)計(jì)算得到:n0=n2+1。原命題得證变丧!

3:不同形態(tài)的二叉樹

1:滿二叉樹

定義:高度為h芽狗,并且由2{h} –1個(gè)結(jié)點(diǎn)的二叉樹,被稱為滿二叉樹痒蓬,其實(shí)不難看出童擎,滿二叉樹的結(jié)點(diǎn)的度要么為0(葉子結(jié)點(diǎn)),要么為2(非葉子結(jié)點(diǎn))

2:完全二叉樹

定義:一棵二叉樹中谊却,只有最下面兩層結(jié)點(diǎn)的度可以小于2柔昼,并且最下一層的葉結(jié)點(diǎn)集中在靠左的若干位置上。這樣的二叉樹稱為完全二叉樹炎辨。

特點(diǎn):葉子結(jié)點(diǎn)只能出現(xiàn)在最下層和次下層捕透,且最下層的葉子結(jié)點(diǎn)集中在樹的左部。顯然碴萧,一棵滿二叉樹必定是一棵完全二叉樹乙嘀,而完全二叉樹未必是滿二叉樹。

3:二叉查找樹

定義:二叉查找樹破喻,又被稱為二叉搜索樹虎谢。其特點(diǎn)如下:設(shè)x為二叉查找樹中的一個(gè)結(jié)點(diǎn),x節(jié)點(diǎn)包含關(guān)鍵字key曹质,一句話就是左孩子比父節(jié)點(diǎn)小婴噩,右孩子比父節(jié)點(diǎn)大,還有一個(gè)特性就是”中序遍歷“可以讓結(jié)點(diǎn)有序羽德。

綜上所述,在二叉樹中:

1:若任意節(jié)點(diǎn)的左子樹不空几莽,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值

2:任意節(jié)點(diǎn)的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值宅静;

3:任意節(jié)點(diǎn)的左章蚣、右子樹也分別為二叉查找樹;

4:沒有鍵值相等的節(jié)點(diǎn)姨夹。

由于在實(shí)際應(yīng)用中纤垂,二叉查找樹的使用比較多,后面會(huì)有文章講解二叉查找樹的一些關(guān)鍵操作的代碼實(shí)現(xiàn)磷账。

文章轉(zhuǎn)載自公眾號(hào):碼農(nóng)有道

http://weixin.qq.com/r/w0S6os7EPpNBrYrB9xHR(二維碼自動(dòng)識(shí)別)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峭沦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子够颠,更是在濱河造成了極大的恐慌熙侍,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件履磨,死亡現(xiàn)場(chǎng)離奇詭異蛉抓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)剃诅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門巷送,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人矛辕,你說(shuō)我怎么就攤上這事笑跛。” “怎么了聊品?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵飞蹂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我翻屈,道長(zhǎng)陈哑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任伸眶,我火速辦了婚禮惊窖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厘贼。我一直安慰自己界酒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布嘴秸。 她就那樣靜靜地躺著毁欣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岳掐。 梳的紋絲不亂的頭發(fā)上凭疮,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音岩四,去河邊找鬼哭尝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剖煌,可吹牛的內(nèi)容都是我干的材鹦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼耕姊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桶唐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茉兰,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尤泽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坯约,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熊咽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闹丐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片横殴。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卿拴,靈堂內(nèi)的尸體忽然破棺而出衫仑,到底是詐尸還是另有隱情,我是刑警寧澤堕花,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布文狱,位于F島的核電站,受9級(jí)特大地震影響缘挽,放射性物質(zhì)發(fā)生泄漏瞄崇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一到踏、第九天 我趴在偏房一處隱蔽的房頂上張望杠袱。 院中可真熱鬧,春花似錦窝稿、人聲如沸楣富。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纹蝴。三九已至,卻和暖如春踪少,著一層夾襖步出監(jiān)牢的瞬間塘安,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工援奢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兼犯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓集漾,卻偏偏與公主長(zhǎng)得像切黔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子具篇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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