二叉樹(shù)專題:1.設(shè)計(jì)二叉樹(shù)類

對(duì)于什么是樹(shù),以及樹(shù)的概念亲茅,我們?cè)谶@里不做贅述了回铛,大家在數(shù)據(jù)結(jié)構(gòu)的課程里都應(yīng)該學(xué)過(guò)狗准,這里我推薦mooc慕課中浙江大學(xué)陳越老師的《數(shù)據(jù)結(jié)構(gòu)》課程,非常便于理解數(shù)據(jù)結(jié)構(gòu)的知識(shí)茵肃,而且對(duì)于算法的講解很透徹腔长。

今天我們主要講的是如何設(shè)計(jì)一個(gè)二叉樹(shù)類,大家都知道Java中是沒(méi)有結(jié)點(diǎn)以及指針類型的验残,實(shí)現(xiàn)起來(lái)有時(shí)會(huì)讓我們摸不到頭腦捞附,這一講也是為了以后深入了解二叉樹(shù)相關(guān)算法和十分重要的二叉樹(shù)的遍歷作為提前的知識(shí)儲(chǔ)備,比較簡(jiǎn)單您没,很容易理解:)

二叉樹(shù)的抽象數(shù)據(jù)類型

首先我們要了解二叉樹(shù)基本實(shí)現(xiàn)所需要的抽象數(shù)據(jù)類型鸟召,從兩個(gè)方面介紹

①.數(shù)據(jù)集合:為二叉樹(shù)的結(jié)點(diǎn)集合,每個(gè)結(jié)點(diǎn)由數(shù)據(jù)元素和構(gòu)造數(shù)據(jù)元素之間關(guān)系的指針組成氨鹏。

②.操作集合:

(1)雙親結(jié)點(diǎn)parent():

(2)左孩子結(jié)點(diǎn)leftChild()

(3)右孩子結(jié)點(diǎn)rightSibling()

(4)左插入結(jié)點(diǎn)insertLeftNode(x)

(5)右插入結(jié)點(diǎn)insertRightNode(x):

(6)左刪除子樹(shù)deleteLeftTree()

(7)右刪除子樹(shù)deleteRightTree()

(8)遍歷二叉樹(shù)traverse(vs)---最重要也就是這個(gè)啦

二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)

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

(a)為非完全二叉樹(shù)欧募,既然我們要存儲(chǔ)(a),首先我們要把它變成完全二叉樹(shù)喻犁,也就是將空余部分補(bǔ)上槽片,因?yàn)槎鏄?shù)本身就是有順序的,樹(shù)根為0肢础,所以A為0 B為1 C為2 我們順序把結(jié)點(diǎn)存入數(shù)組,空出來(lái)的地方就為空

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

二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是用指針建立二叉樹(shù)中結(jié)點(diǎn)之間的關(guān)系碌廓。

二叉鏈存儲(chǔ)結(jié)構(gòu)的每個(gè)結(jié)點(diǎn)包含三個(gè)域 传轰。

data:為數(shù)據(jù)域 ?leftChild:為左孩子的指針域 ?rightChild:為右孩子的指針域

舉個(gè)小栗子~

(a)不帶頭結(jié)點(diǎn)的二叉樹(shù),可以看到谷婆,沒(méi)有指針域的結(jié)點(diǎn)慨蛙,左邊或者右邊為空

(b)帶頭結(jié)點(diǎn)的二叉樹(shù),頭結(jié)點(diǎn)只負(fù)責(zé)指向我們的樹(shù)根結(jié)點(diǎn)

設(shè)計(jì)二叉樹(shù)

二叉樹(shù)由三個(gè)部分組成:結(jié)點(diǎn)纪挎、左孩子期贫、右孩子,因此我們要設(shè)計(jì)的二叉樹(shù)類由兩個(gè)部分組成:二叉樹(shù)類和二叉樹(shù)結(jié)點(diǎn)類异袄。

二叉樹(shù)結(jié)點(diǎn)類

首先我們聲明三個(gè)私有的成員變量:數(shù)據(jù)元素(即結(jié)點(diǎn)的值)通砍、左孩子和右孩子,生成get/set方法烤蜕,為了方便初始化和傳值封孙,我們分別聲明一個(gè)無(wú)參的構(gòu)造方法和有參的構(gòu)造方法。具體代碼如下讽营。

二叉樹(shù)類

當(dāng)我們有了二叉樹(shù)結(jié)點(diǎn)類虎忌,我們就可以創(chuàng)建一個(gè)二叉樹(shù)了,我們把結(jié)點(diǎn)的數(shù)據(jù)元素傳給我們的二叉樹(shù)結(jié)點(diǎn)類橱鹏,并且區(qū)分好左右膜蠢,這樣我們的二叉樹(shù)就建立好了堪藐。

總結(jié)

理解好二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)至關(guān)重要,也是為了我們接下來(lái)學(xué)習(xí)遍歷二叉樹(shù)而大號(hào)基礎(chǔ)挑围。

下一講礁竞,我們就開(kāi)始研究如何遍歷二叉樹(shù)的算法!直奔主題贪惹!

PS:有什么問(wèn)題或者不解的地方可以評(píng)論苏章,我都會(huì)一一就行回復(fù)的,如果有錯(cuò)誤或者言語(yǔ)不明的地方奏瞬,還請(qǐng)大神多多指點(diǎn)枫绅!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市硼端,隨后出現(xiàn)的幾起案子并淋,更是在濱河造成了極大的恐慌,老刑警劉巖珍昨,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件县耽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡镣典,警方通過(guò)查閱死者的電腦和手機(jī)兔毙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兄春,“玉大人澎剥,你說(shuō)我怎么就攤上這事「嫌撸” “怎么了哑姚?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芜茵。 經(jīng)常有香客問(wèn)我叙量,道長(zhǎng),這世上最難降的妖魔是什么九串? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任绞佩,我火速辦了婚禮,結(jié)果婚禮上蒸辆,老公的妹妹穿的比我還像新娘征炼。我一直安慰自己,他們只是感情好躬贡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布谆奥。 她就那樣靜靜地躺著,像睡著了一般拂玻。 火紅的嫁衣襯著肌膚如雪酸些。 梳的紋絲不亂的頭發(fā)上宰译,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音魄懂,去河邊找鬼沿侈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛市栗,可吹牛的內(nèi)容都是我干的缀拭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼填帽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛛淋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起篡腌,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤褐荷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后嘹悼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叛甫,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年杨伙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了其监。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡限匣,死狀恐怖棠赛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膛腐,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布鼎俘,位于F島的核電站哲身,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贸伐。R本人自食惡果不足惜勘天,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捉邢。 院中可真熱鬧脯丝,春花似錦、人聲如沸伏伐。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藐翎。三九已至材蹬,卻和暖如春实幕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背堤器。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工昆庇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闸溃。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓整吆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親辉川。 傳聞我的和親對(duì)象是個(gè)殘疾皇子表蝙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 四勇哗、樹(shù)與二叉樹(shù) 1. 二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu) 二叉樹(shù)的順序存儲(chǔ)就是用數(shù)組存儲(chǔ)二叉樹(shù)。二叉樹(shù)的每個(gè)結(jié)點(diǎn)在順序存儲(chǔ)中都有...
    MinoyJet閱讀 1,505評(píng)論 0 7
  • B樹(shù)的定義 一棵m階的B樹(shù)滿足下列條件: 樹(shù)中每個(gè)結(jié)點(diǎn)至多有m個(gè)孩子寸齐。 除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)外欲诺,其它每個(gè)結(jié)點(diǎn)至少有m...
    文檔隨手記閱讀 13,181評(píng)論 0 25
  • 數(shù)據(jù)結(jié)構(gòu)和算法--二叉樹(shù)的實(shí)現(xiàn) 幾種二叉樹(shù) 1、二叉樹(shù) 和普通的樹(shù)相比渺鹦,二叉樹(shù)有如下特點(diǎn): 每個(gè)結(jié)點(diǎn)最多只有兩棵子...
    sunhaiyu閱讀 6,426評(píng)論 0 14
  • 樹(shù)和二叉樹(shù) 1扰法、樹(shù)的定義 樹(shù)(Tree)是由一個(gè) 或 多個(gè)結(jié)點(diǎn) 組成的有限集合T,且滿足: ①有且僅有一個(gè)稱為根的...
    利伊奧克兒閱讀 1,349評(píng)論 0 1
  • 可樂(lè)要加冰 愛(ài)我要走心 北方的3月余寒未退毅厚,雖然以是春天但是還是格外的寒冷塞颁。或許這就是春風(fēng)刺骨吧吸耿! 中國(guó)...
    加冰的可樂(lè)閱讀 196評(píng)論 1 2