java進階篇--紅黑樹和平衡二叉樹有什麼區別?

數據結構屬於理解一些源碼和技術所必備的知識,比如要讀懂 Java 語言中 TreeMap 和 TreeSet 的源碼就要懂紅黑樹的數據結構,不然是無法理解源碼中關於紅黑樹數據的操作代碼的,比如左旋、右旋、添加和刪除操作等。因此本課時我們就來學習一下數據結構的基礎知識,方便看懂源碼或者是防止面試中被問到。

我們本課時的面試題是,紅黑樹和二叉樹有什麼區別?

回答:

要回答這個問題之前,我們先要弄清什麼是二叉樹?什麼是紅黑樹?

二叉樹(Binary Tree)是指每個節點最多隻有兩個分支的樹結構,即不存在分支大於 2 的節點,二叉樹的數據結構如下圖所示:

這是一棵擁有 6 個節點深度爲 2(深度從 0 開始),並且根節點爲 3 的二叉樹。

二叉樹有兩個分支通常被稱作“左子樹”和“右子樹”,而且這些分支具有左右次序不能隨意地顛倒。

一棵空樹或者滿足以下性質的二叉樹被稱之爲二叉查找樹:

    若任意節點的左子樹不爲空,則左子樹上所有節點的值均小於它的根節點的值;

    若任意節點的右子樹不爲空,則右子樹上所有節點的值均大於或等於它的根節點的值;

    任意節點的左、右子樹分別爲二叉查找樹。

如下圖所示,這就是一個標準的二叉查找樹:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章