這段時間看了一下b-樹,感覺這裡面好像有點故事啊。不知創造b-樹的人究竟過了乙個怎樣的人生。
這是一家網際網路公司。公司新招聘進來人了,名字叫a,你不可能讓它立刻做管理層吧,所以先把這個新人安排到基層做一線碼農。等我看看啊,a同學你是廣州分舵 - 移動業務分部 - ios組的。幹了一段時間,這個ios組的人越來越多了,為了方便管理,公司就把組分開成了兩個小組,ios介面組和ios業務組,同屬移動業務分部,然後調了a到移動業務分部做管理層。a的工作能力不上不下但是喜歡拍馬屁。後來a因為所在部門膨脹**等原因,所以很榮幸地被公升到了廣州分舵,最後居然到了董事會。到了董事會就公升職到頭了?並不,這個公司的官僚玩得溜。董事會膨脹著膨脹著,就會出現一批特別會斂財的人。那幫有錢的人啊,事實上又形成了乙個更加有權的大董事會,董事會其他人都得聽他們的。這個大董事會形成了之後啊,公司所有人發現,自己居然不多不少又多了乙個老闆。這是一棵b-樹。乙個元素新進來了,放到合適的葉節點下面。如果這個葉節點膨脹得太大了,就**開來,**點(也就是中間的節點)被調到父節點上面。如果父節點膨脹得大了,就又**開來。知道根節點膨脹得大了,就會**出新的根,舊的根成為新的根的兩個子節點。這成為b-樹最重要的特性:每個葉節點的的高度都是一樣的。
遞迴的關鍵是:膨脹,然後**,彈出中間那個。中間那個怎麼處置交給父節點決定。
中國有句古話叫做虎毒不食子,沒說虎毒不坑爹啊。我們要說的乙個世紀好爸爸的故事。就拿b君來說,b君是個敗家子,三四十歲人了,都有自己家庭的人了,總是賭博賭到家徒四壁。錢不多了咋辦,先找兄弟借啊。兄弟有錢就拜託兄弟轉點錢過來。但是這次不同了,b的兄弟說我都已經快沒錢周轉了,借不了給你了。b君怎麼說也是個好爸爸,不想坑兒子,就去坑爹了,從老爸那裡套來了錢。老爸也終於有一天沒錢了,兄弟借不了,就找爺爺拿錢。按著這樣下去,最終到了曾曾曾爺爺沒錢了,那麼曾曾曾爺爺的老爸呢已經是掛了的,曾曾曾爺爺本人也處於瀕死狀態了,見到自己兒子又來借錢,曾曾曾爺爺就說:我已經是快要死的人了;這樣吧,我這副金牙還值點錢,把我殺了,然後拿這金牙去賣吧。臥槽這麼說著就覺得好悲傷……這是乙個b-樹。從它那裡刪除乙個不在葉節點的元素都可以轉化成:將它跟它左子樹的最右端(或者右子樹的最左端)交換,然後刪掉成為葉子的它。刪掉以後平衡,說的就是上面的故事。
葉子節點刪到小於最低限度了,這時它可以選擇先找兄弟:左兄弟還寬裕,就把左兄弟最右端的元素通過右旋過來(用父節點中轉);左兄弟窮了,但是右兄弟還寬裕,就把右兄弟最左端的元素通過左旋取過來(用父節點中轉,說到底還是坑爹)。如果兄弟沒有了,才去找父節點,父節點就不用想太多了,直接拿就是了,父節點自己會處理(也就是回到本段的開頭,遞迴開始了)。留意到永遠不要去拿子節點的元素。
根節點是唯一乙個沒有最低限度的(或者說最低就是0),隨意拿就是了。一直拿拿到根節點沒有元素了,就把根節點刪掉。這是b-樹唯一高度下降的途徑。
真是麻煩又不恰當的比喻。見笑了。b-tree詳細的定義和演算法還請翻課本。本文只是為了加深記憶,或者梳理思路用。
關於B樹的一點理解
首先,需要強調的是b樹對應的英文名字就是b tree 名字中的 其實是連字元 並沒有一種b減樹。b樹種的英文本母b是balance的意思。也就是說b樹是自平衡樹 目前有許多不同的技術可用來在計算機系統中提供儲存能力。例如,矽制的儲存晶元,速度比較快,但是卻造價相對昂貴,且失電後儲存內容丟失 磁儲存技...
B樹和B 樹的一點點區別
b樹的特點 b樹 是每個節點都儲存著資料,類似於 鍊錶的結構 b 樹的特點 只有葉子節點會儲存資料,其他節點均是儲存路徑 類似於win的檔案系統,每個非葉子節點相當於乙個資料夾的名稱 所以更有利於檔案的儲存,mysql 的innodb引擎預設使用b 樹來儲存資料,和索引 mysql的索引 分為很多類...
土一點的比客書評網
不需要花哨的功能,盡量土一點,不是很多人也說豆瓣網很土嗎,可就因為人家土,悶著頭做了兩年,2006年簡直成為國內本土的最成功的 之一 土不土並不重要,重要的是提供的是不是大家是否需要的東西,這是非常重要的一點,以前我在正陽的時候,經常負責的是產品定義和產品需求研究的相關的事情,那時經常的想這個問題,...