更新時(shí)間:2020-07-30 14:22:27 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3176次
1.樹和二叉樹(了解)
前面我們介紹的數(shù)據(jù)結(jié)構(gòu)數(shù)組、棧、隊(duì)列,鏈表都是線性數(shù)據(jù)結(jié)構(gòu),除此之外還有一種比較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)——樹。
計(jì)算機(jī)中的樹,是根據(jù)生活中的樹抽象而來的,表示N個(gè)有父子關(guān)系的節(jié)點(diǎn)的集合。
N為0的時(shí)候,該節(jié)點(diǎn)集合為空,這棵樹就是空樹
任何非空樹中,有且只有一個(gè)根節(jié)點(diǎn)(root)
N>1時(shí),一顆樹由根和若干棵子樹組成,每棵子樹由更小的若干子樹組成
樹中的節(jié)點(diǎn)根據(jù)有沒有子節(jié)點(diǎn),分成兩種:
普通節(jié)點(diǎn):擁有子節(jié)點(diǎn)的節(jié)點(diǎn)。
葉子節(jié)點(diǎn):沒有字節(jié)點(diǎn)的節(jié)點(diǎn)。

二叉樹:一種特殊的,遵循某種規(guī)則的樹。
樹的結(jié)構(gòu)因?yàn)榇嬖诙喾N子節(jié)點(diǎn)情況,真的太復(fù)雜了,如果我們對(duì)普通的樹加上一些約束,比如讓每一棵樹的節(jié)點(diǎn)最多只能包含兩個(gè)子節(jié)點(diǎn),而且嚴(yán)格區(qū)分左子節(jié)點(diǎn)和右子節(jié)點(diǎn)(左右位置不能交換),此時(shí)就形成了二叉樹。
排序二叉樹,有順序的樹:
若左子樹不為空,則左子樹所有節(jié)點(diǎn)的值小于根節(jié)點(diǎn)的值。
若右子樹不為空,則右子樹所有節(jié)點(diǎn)的值大于根節(jié)點(diǎn)的值。
左右子樹也分別是排序二叉樹。

紅黑樹:更高查詢效率的的排序二叉樹。
排序二叉樹可以快速查找,但是如果只有左節(jié)點(diǎn)或者左右右節(jié)點(diǎn)的時(shí)候,此時(shí)二叉樹就變成了普通的鏈表結(jié)構(gòu),查詢效率比較低。為此一種更高效的二叉樹出現(xiàn)了——紅黑樹。
每個(gè)節(jié)點(diǎn)要么是紅色的,要么是黑色的。
根節(jié)點(diǎn)永遠(yuǎn)是黑色的。
所有葉子節(jié)點(diǎn)都是空節(jié)點(diǎn)(null),是黑色的。
每個(gè)紅色節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)都是黑色的。
從任何一個(gè)節(jié)點(diǎn)到其子樹每個(gè)葉子節(jié)點(diǎn)的路徑都包含相同數(shù)量的黑色節(jié)點(diǎn)。

學(xué)習(xí)方法指南:http://www.soulsinkind.com/javavideo/149.html
Java零基礎(chǔ)入門:http://www.soulsinkind.com/javavideo/110.html
Java入門到精通:http://www.soulsinkind.com/javavideo/144.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java入門菜鳥教程下載之樹和二叉樹基礎(chǔ)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)