摘要:寫在前面紅黑樹,對很多童鞋來說,是既熟悉又陌生。每次需要查看紅黑樹內容時都很難以更生動形象的方式來理解其內容。
寫在前面
紅黑樹,對很多童鞋來說,是既熟悉又陌生。學校中學過,只了解大概;工作中不怎么使用,但面試又是重點。每次需要查看紅黑樹內容時都很難以更生動形象的方式來理解其內容。沒錯,本文內容就是要解決這個問題,用簡單的語言,搭配靜圖和動圖(利用大腦圖形記憶方式),讓你對紅黑樹有更深入的了解和更清晰的記憶,希望小伙伴們再次遇到紅黑樹的問題不至于頭大,建議讀該文章姿勢: 打開兩個頁面,一個頁面看圖片和內容,一個頁面看公式,像玩魔方一樣,多玩幾次就明白了
通過工具 (公眾號回復「工具」—>那些可以提高效率的工具—>紅黑樹) 動態感受紅黑樹的轉換過程
俺家司令買完東西后,我倆經常會發生這樣的一段對話:司令:你猜我買的這個多少錢?
我: 1000
司令: 高了
我: 500
司令: 低了:
我: 750
...... 直到最后猜中
這樣說大家應該已經猜到了是「二分查找法」,通過這個例子我想要引出的是 樹,來看圖片
程序中的樹其實是我們日??吹降臉涞牡褂埃蛘甙l揮一下想象,倒影也可以是樹根
二叉查找樹,Binary Search Tree 「BST」,要想了解二叉查找樹,我們首先看下二叉查找樹有哪些特性呢?
某節點的左子樹節點值僅包含小于該節點值
某節點的右子樹節點值僅包含大于該節點值
左右子樹每個也必須是二叉查找樹
看個圖就輕松理解上面三句話的意思了:
上圖,結合二叉查找樹的三條約束來看,非常好,沒有什么問題。再來看一個圖,依舊符合上面三條約束,感覺有問題嗎?
這是一個走路一米六,一米八的樹
這是一個畸形的樹,大風一掛很可能被折斷的樹
從程序的角度來說這個樹不夠平衡,查找次數或時間復雜度 O(h)可能會隨著一條腿長無限增長
理科生在高中學習生物時學過一個關鍵字「去除頂端優勢」,通過去除植物頂端優勢,側芽會迅速生長,慢慢變得強壯和平衡, 紅黑樹其實就是去除二叉查找樹頂端優勢的解決方案,從而達到樹的平衡
紅黑樹紅黑樹,Red-Black Tree 「RBT」是一個自平衡(不是絕對的平衡)的二叉查找樹(BST),樹上的每個節點都遵循下面的規則:
每個節點都有紅色或黑色
樹的根始終是黑色的 (黑土地孕育黑樹根,
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77911.html
摘要:在項目中,為滿足以上要求,我們將大量的參數配置在或文件中,通過注解,我們可以方便的獲取這些參數值使用配置模塊假設我們正在搭建一個發送郵件的模塊。這使得在不影響其他模塊的情況下重構一個模塊中的屬性變得容易。 在編寫項目代碼時,我們要求更靈活的配置,更好的模塊化整合。在 Spring Boot 項目中,為滿足以上要求,我們將大量的參數配置在 application.properties 或...
摘要:在項目中,為滿足以上要求,我們將大量的參數配置在或文件中,通過注解,我們可以方便的獲取這些參數值使用配置模塊假設我們正在搭建一個發送郵件的模塊。這使得在不影響其他模塊的情況下重構一個模塊中的屬性變得容易。 在編寫項目代碼時,我們要求更靈活的配置,更好的模塊化整合。在 Spring Boot 項目中,為滿足以上要求,我們將大量的參數配置在 application.properties 或...
面試舊敵之紅黑樹(直白介紹深入理解) - Android - 掘金 讀完本文你將了解到: 什么是紅黑樹 黑色高度 紅黑樹的 5 個特性 紅黑樹的左旋右旋 指定節點 x 的左旋 右圖轉成左圖 指定節點 y 的右旋左圖轉成右圖 紅黑樹的平衡插入 二叉查找樹的插入 插入后調整紅黑樹結構 調整思想 插入染紅后... java 多線程同步以及線程間通信詳解 & 消費者生產者模式 & 死鎖 & Thread...
閱讀 1516·2021-11-18 10:02
閱讀 1657·2021-09-04 16:40
閱讀 3170·2021-09-01 10:48
閱讀 873·2019-08-30 15:55
閱讀 1852·2019-08-30 15:55
閱讀 1364·2019-08-30 13:05
閱讀 3012·2019-08-30 12:52
閱讀 1623·2019-08-30 11:24