摘要:正由于紅黑樹(shù)總保持黑色完美平衡,所以它的查找最壞時(shí)間復(fù)雜度為,也即整顆樹(shù)剛好紅黑相隔的時(shí)候。能有這么好的查找效率得益于紅黑樹(shù)自平衡的特性,而這背后的付出,紅黑樹(shù)的插入操作功不可沒(méi)
因?yàn)榧t黑樹(shù)是一顆二叉平衡樹(shù),并且查找不會(huì)破壞樹(shù)的平衡,所以查找跟二叉平衡樹(shù)的查找無(wú)異:
從根結(jié)點(diǎn)開(kāi)始查找,把根結(jié)點(diǎn)設(shè)置為當(dāng)前結(jié)點(diǎn);
若當(dāng)前結(jié)點(diǎn)為空,返回null;
若當(dāng)前結(jié)點(diǎn)不為空,用當(dāng)前結(jié)點(diǎn)的key跟查找key作比較;
若當(dāng)前結(jié)點(diǎn)key等于查找key,那么該key就是查找目標(biāo),返回當(dāng)前結(jié)點(diǎn);
若當(dāng)前結(jié)點(diǎn)key大于查找key,把當(dāng)前結(jié)點(diǎn)的左子結(jié)點(diǎn)設(shè)置為當(dāng)前結(jié)點(diǎn),重復(fù)步驟2;
若當(dāng)前結(jié)點(diǎn)key小于查找key,把當(dāng)前結(jié)點(diǎn)的右子結(jié)點(diǎn)設(shè)置為當(dāng)前結(jié)點(diǎn),重復(fù)步驟2;
非常簡(jiǎn)單,但簡(jiǎn)單不代表它效率不好。正由于紅黑樹(shù)總保持黑色完美平衡,所以它的查找最壞時(shí)間復(fù)雜度為O(2lgN),也即整顆樹(shù)剛好紅黑相隔的時(shí)候。能有這么好的查找效率得益于紅黑樹(shù)自平衡的特性,而這背后的付出,紅黑樹(shù)的插入操作功不可沒(méi)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74946.html
摘要:并且,我們的底層都是紅黑樹(shù)來(lái)實(shí)現(xiàn)的。紅黑樹(shù)是一種平衡二叉樹(shù)因此它沒(méi)有節(jié)點(diǎn)。 前言 聲明,本文用得是jdk1.8 前面已經(jīng)講了Collection的總覽和剖析List集合: Collection總覽 List集合就這么簡(jiǎn)單【源碼剖析】 原本我是打算繼續(xù)將Collection下的Set集合的,結(jié)果看了源碼發(fā)現(xiàn):Set集合實(shí)際上就是HashMap來(lái)構(gòu)建的! showImg(https:/...
摘要:用這種范例表示紅黑樹(shù)是可能的,但是這會(huì)改變一些性質(zhì)并使算法復(fù)雜。插入會(huì)出現(xiàn)種情況為根節(jié)點(diǎn),即紅黑樹(shù)的根節(jié)點(diǎn)。 說(shuō)到HashMap,就一定要說(shuō)到紅黑樹(shù),紅黑樹(shù)作為一種自平衡二叉查找樹(shù),是一種用途較廣的數(shù)據(jù)結(jié)構(gòu),在jdk1.8中使用紅黑樹(shù)提升HashMap的性能,今天就來(lái)說(shuō)一說(shuō)紅黑樹(shù)。 前言 限于篇幅,本文只對(duì)紅黑樹(shù)的基礎(chǔ)進(jìn)行說(shuō)明,暫不涉及源碼部分,大部分摘抄自維基百科,這里也貼出對(duì)應(yīng)鏈接...
摘要:在二叉查找樹(shù)強(qiáng)制一般要求以外,對(duì)于任何有效的紅黑樹(shù)增加了如下的額外要求節(jié)點(diǎn)是紅色或黑色。紅黑樹(shù)有哪些應(yīng)用場(chǎng)景內(nèi)核和系統(tǒng)調(diào)用實(shí)現(xiàn)中使用的完全公平調(diào)度程序使用紅黑樹(shù)。 前言 這篇文章是記錄自己分析 Java 8 的 HashMap 源碼時(shí)遇到的疑問(wèn)和總結(jié),在分析的過(guò)程中筆者把遇到的問(wèn)題都記錄下來(lái),然后逐一擊破,如果有錯(cuò)誤的地方,希望讀者可以指正,筆者感激不盡。 疑問(wèn)與解答 什么是 initia...
摘要:在二叉查找樹(shù)強(qiáng)制一般要求以外,對(duì)于任何有效的紅黑樹(shù)增加了如下的額外要求節(jié)點(diǎn)是紅色或黑色。紅黑樹(shù)有哪些應(yīng)用場(chǎng)景內(nèi)核和系統(tǒng)調(diào)用實(shí)現(xiàn)中使用的完全公平調(diào)度程序使用紅黑樹(shù)。 前言 這篇文章是記錄自己分析 Java 8 的 HashMap 源碼時(shí)遇到的疑問(wèn)和總結(jié),在分析的過(guò)程中筆者把遇到的問(wèn)題都記錄下來(lái),然后逐一擊破,如果有錯(cuò)誤的地方,希望讀者可以指正,筆者感激不盡。 疑問(wèn)與解答 什么是 initia...
摘要:在二叉查找樹(shù)強(qiáng)制一般要求以外,對(duì)于任何有效的紅黑樹(shù)增加了如下的額外要求節(jié)點(diǎn)是紅色或黑色。紅黑樹(shù)有哪些應(yīng)用場(chǎng)景內(nèi)核和系統(tǒng)調(diào)用實(shí)現(xiàn)中使用的完全公平調(diào)度程序使用紅黑樹(shù)。 前言 這篇文章是記錄自己分析 Java 8 的 HashMap 源碼時(shí)遇到的疑問(wèn)和總結(jié),在分析的過(guò)程中筆者把遇到的問(wèn)題都記錄下來(lái),然后逐一擊破,如果有錯(cuò)誤的地方,希望讀者可以指正,筆者感激不盡。 疑問(wèn)與解答 什么是 initia...
閱讀 485·2019-08-29 12:44
閱讀 3065·2019-08-26 17:49
閱讀 2548·2019-08-26 13:40
閱讀 1226·2019-08-26 13:39
閱讀 3711·2019-08-26 11:59
閱讀 1877·2019-08-26 10:59
閱讀 2547·2019-08-23 18:33
閱讀 2751·2019-08-23 18:30