欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

劍指XX游戲(六)-輕松搞定面試中的紅黑樹(shù)問(wèn)題-創(chuàng)新互聯(lián)

版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處,謝謝!
http://blog.csdn.net/silangquan/article/details/18655795

創(chuàng)新互聯(lián)建站專(zhuān)業(yè)為企業(yè)提供黎川網(wǎng)站建設(shè)、黎川做網(wǎng)站、黎川網(wǎng)站設(shè)計(jì)、黎川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、黎川企業(yè)網(wǎng)站模板建站服務(wù),十載黎川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

  連續(xù)兩次面試都問(wèn)到了紅黑樹(shù),關(guān)鍵兩次都沒(méi)有答好,這次就完整地來(lái)學(xué)習(xí)整理一下。

沒(méi)有學(xué)習(xí)過(guò)紅黑樹(shù)的同學(xué)請(qǐng)參考:

<<Introduction to Algorithms>> Chapter 13 Red-Black Trees Chapter 14 Augmenting Data Structures

教你透徹了解紅黑樹(shù)

1.stl中的set底層用的什么數(shù)據(jù)結(jié)構(gòu)?

2.紅黑樹(shù)的數(shù)據(jù)結(jié)構(gòu)怎么定義的?

3.紅黑樹(shù)有哪些性質(zhì)?

4.紅黑樹(shù)的各種操作的時(shí)間復(fù)雜度是多少?

5.紅黑樹(shù)相比于BST和AVL樹(shù)有什么優(yōu)點(diǎn)?

6.紅黑樹(shù)相對(duì)于哈希表,在選擇使用的時(shí)候有什么依據(jù)?

7.如何擴(kuò)展紅黑樹(shù)來(lái)獲得比某個(gè)結(jié)點(diǎn)小的元素有多少個(gè)?

8.擴(kuò)展數(shù)據(jù)結(jié)構(gòu)有什么步驟?

詳細(xì)解答

1.stl中的set底層用的什么數(shù)據(jù)結(jié)構(gòu)?

紅黑樹(shù)

2.紅黑樹(shù)的數(shù)據(jù)結(jié)構(gòu)怎么定義?

enum Color {           RED = 0,           BLACK = 1 };  struct RBTreeNode {            struct RBTreeNode*left, *right, *parent;            int   key;            int data;            Color color; };

3.紅黑樹(shù)有哪些性質(zhì)?

一般的,紅黑樹(shù),滿足以下性質(zhì),即只有滿足以下全部性質(zhì)的樹(shù),我們才稱(chēng)之為紅黑樹(shù):
1)每個(gè)結(jié)點(diǎn)要么是紅的,要么是黑的。
2)根結(jié)點(diǎn)是黑的。
3)每個(gè)葉結(jié)點(diǎn)(葉結(jié)點(diǎn)即指樹(shù)尾端NIL指針或NULL結(jié)點(diǎn))是黑的。
4)如果一個(gè)結(jié)點(diǎn)是紅的,那么它的倆個(gè)兒子都是黑的。
5)對(duì)于任一結(jié)點(diǎn)而言,其到葉結(jié)點(diǎn)樹(shù)尾端NIL指針的每一條路徑都包含相同數(shù)目的黑結(jié)點(diǎn)。

4.紅黑樹(shù)的各種操作的時(shí)間復(fù)雜度是多少?

能保證在最壞情況下,基本的動(dòng)態(tài)幾何操作的時(shí)間均為O(lgn)

5.紅黑樹(shù)相比于BST和AVL樹(shù)有什么優(yōu)點(diǎn)?

紅黑樹(shù)是犧牲了嚴(yán)格的高度平衡的優(yōu)越條件為代價(jià),它只要求部分地達(dá)到平衡要求,降低了對(duì)旋轉(zhuǎn)的要求,從而提高了性能。紅黑樹(shù)能夠以O(shè)(log2 n)的時(shí)間復(fù)雜度進(jìn)行搜索、插入、刪除操作。此外,由于它的設(shè)計(jì),任何不平衡都會(huì)在三次旋轉(zhuǎn)之內(nèi)解決。當(dāng)然,還有一些更好的,但實(shí)現(xiàn)起來(lái)更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)能夠做到一步旋轉(zhuǎn)之內(nèi)達(dá)到平衡,但紅黑樹(shù)能夠給我們一個(gè)比較“便宜”的解決方案。

相比于BST,因?yàn)榧t黑樹(shù)可以能確保樹(shù)的最長(zhǎng)路徑不大于兩倍的最短路徑的長(zhǎng)度,所以可以看出它的查找效果是有最低保證的。在最壞的情況下也可以保證O(logN)的,這是要好于二叉查找樹(shù)的。因?yàn)槎娌檎覙?shù)最壞情況可以讓查找達(dá)到O(N)。

紅黑樹(shù)的算法時(shí)間復(fù)雜度和AVL相同,但統(tǒng)計(jì)性能比AVL樹(shù)更高,所以在插入和刪除中所做的后期維護(hù)操作肯定會(huì)比紅黑樹(shù)要耗時(shí)好多,但是他們的查找效率都是O(logN),所以紅黑樹(shù)應(yīng)用還是高于AVL樹(shù)的. 實(shí)際上插入 AVL 樹(shù)和紅黑樹(shù)的速度取決于你所插入的數(shù)據(jù).如果你的數(shù)據(jù)分布較好,則比較宜于采用 AVL樹(shù)(例如隨機(jī)產(chǎn)生系列數(shù)),但是如果你想處理比較雜亂的情況,則紅黑樹(shù)是比較快的

6.紅黑樹(shù)相對(duì)于哈希表,在選擇使用的時(shí)候有什么依據(jù)?

權(quán)衡三個(gè)因素: 查找速度, 數(shù)據(jù)量, 內(nèi)存使用,可擴(kuò)展性。
總體來(lái)說(shuō),hash查找速度會(huì)比map快,而且查找速度基本和數(shù)據(jù)量大小無(wú)關(guān),屬于常數(shù)級(jí)別;而map的查找速度是log(n)級(jí)別。并不一定常數(shù)就比log(n) 小,hash還有hash函數(shù)的耗時(shí),明白了吧,如果你考慮效率,特別是在元素達(dá)到一定數(shù)量級(jí)時(shí),考慮考慮hash。但若你對(duì)內(nèi)存使用特別嚴(yán)格, 希望程序盡可能少消耗內(nèi)存,那么一定要小心,hash可能會(huì)讓你陷入尷尬,特別是當(dāng)你的hash對(duì)象特別多時(shí),你就更無(wú)法控制了,而且 hash的構(gòu)造速度較慢。

紅黑樹(shù)并不適應(yīng)所有應(yīng)用樹(shù)的領(lǐng)域。如果數(shù)據(jù)基本上是靜態(tài)的,那么讓他們待在他們能夠插入,并且不影響平衡的地方會(huì)具有更好的性能。如果數(shù)據(jù)完全是靜態(tài)的,例如,做一個(gè)哈希表,性能可能會(huì)更好一些。

在實(shí)際的系統(tǒng)中,例如,需要使用動(dòng)態(tài)規(guī)則的防火墻系統(tǒng),使用紅黑樹(shù)而不是散列表被實(shí)踐證明具有更好的伸縮性。Linux內(nèi)核在管理vm_area_struct時(shí)就是采用了紅黑樹(shù)來(lái)維護(hù)內(nèi)存塊的。

紅黑樹(shù)通過(guò)擴(kuò)展節(jié)點(diǎn)域可以在不改變時(shí)間復(fù)雜度的情況下得到結(jié)點(diǎn)的秩。

7.如何擴(kuò)展紅黑樹(shù)來(lái)獲得比某個(gè)結(jié)點(diǎn)小的元素有多少個(gè)?

這其實(shí)就是求節(jié)點(diǎn)元素的順序統(tǒng)計(jì)量,當(dāng)然任意的順序統(tǒng)計(jì)量都可以需要在O(lgn)時(shí)間內(nèi)確定。

在每個(gè)節(jié)點(diǎn)添加一個(gè)size域,表示以結(jié)點(diǎn) x 為根的子樹(shù)的結(jié)點(diǎn)樹(shù)的大小,則有

size[x] = size[[left[x]] + size [right[x]] + 1;

這時(shí)候紅黑樹(shù)就變成了一棵順序統(tǒng)計(jì)樹(shù)。

利用size域可以做兩件事:

1). 找到樹(shù)中第i小的結(jié)點(diǎn);

OS-SELECT(x;,i) r = size[left[x]] + 1; if i == r      return x elseif i < r      return OS-SELECT(left[x], i) else return OS-SELECT(right[x],  i)

思路:size[left[x]]表示在對(duì)x為根的子樹(shù)進(jìn)行中序遍歷時(shí)排在x之前的個(gè)數(shù),遞歸調(diào)用的深度不會(huì)超過(guò)O(lgn);

2).確定某個(gè)結(jié)點(diǎn)之前有多少個(gè)結(jié)點(diǎn),也就是我們要解決的問(wèn)題;

OS-RANK(T,x) r = x.left.size + 1; y = x; while y != T.root          if y == y.p.right                  r = r + y.p.left.size +1          y = y.p return r


思路:x的秩可以視為在對(duì)樹(shù)的中序遍歷種,排在x之前的結(jié)點(diǎn)個(gè)數(shù)加上一。最壞情況下,OS-RANK運(yùn)行時(shí)間與樹(shù)高成正比,所以為O (lgn).

8.擴(kuò)展數(shù)據(jù)結(jié)構(gòu)有什么步驟?

1).選擇基礎(chǔ)數(shù)據(jù)結(jié)構(gòu);

2).確定要在基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)種添加哪些信息;

3).驗(yàn)證可用基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)上的基本修改操作來(lái)維護(hù)這些新添加的信息;

4).設(shè)計(jì)新的操作。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:劍指XX游戲(六)-輕松搞定面試中的紅黑樹(shù)問(wèn)題-創(chuàng)新互聯(lián)
本文鏈接:http://aaarwkj.com/article44/deocee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、企業(yè)建站品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
日本加勒比一道本东京热| 持续侵犯人妻中文字幕| 99热视频在线观看免费| 中文字幕av一区二区人妻| 中文字幕av免费专区| 亚洲欧美日韩乱码综合久久| 韩国午夜理伦三级好看| 一卡二卡三卡四卡日韩| 日本中文字幕一区在线观看| 亚洲美女高清一区二区三区| 中文字幕久久亚洲一区| 精品国产女同一区二区| 四虎在线观看免费资源| 日韩av天堂在线观看| 激情欧美一区二区三区精品| 亚洲色图综合在线观看| 欧美日韩综合人妻丝袜偷拍| 粉嫩一区二区三区在线| 91伊人手机在线观看| 国产免费av高清在线| 欧美色高清视频在线播放| 午夜神马福利激情视频| 亚洲不卡免费在线视频| 亚洲无人区码一码二码三码| 很黄无遮挡在线免费网站| 亚洲精品成人久久网| 久久国产三级久久久久久| av永久天堂一区二区三区| 国产日韩在线不卡网站| 一欧美一区二区三区| 亚洲免费黄色大片网站| 五月天久久开心激情网| 亚洲天堂欧美天堂淫人天堂| 婷婷91麻豆精品国产人妻| 久久久久久这里都是精品| 欧美激情一区二区三区蜜桃| 国产欧美日韩国产欧美日| 人妻天堂久久一区二区三区| 亚洲华人在线免费视频| 久久国产精品一品二品| av高清不卡一区二区免费在线|