這篇文章主要介紹“什么是紅黑樹”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“什么是紅黑樹”文章能幫助大家解決問題。
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)班瑪免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
想必大家對(duì)二叉樹搜索樹都不陌生,首先看一下二叉搜索樹的定義:
二叉搜索樹(Binary Search Tree),或者是一棵空樹,或者是具有下列性質(zhì)的二叉樹:若它的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;若它的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;它的左、右子樹也分別為二叉排序樹。
從理論上來說,二叉搜索樹的查詢、插入和刪除一個(gè)節(jié)點(diǎn)的時(shí)間復(fù)雜度均為O(log(n)),已經(jīng)完全可以滿足我們的要求了,那么為什么還要有紅黑樹呢?
我們來看一個(gè)例子,向二叉搜索樹中依次插入(1,2,3,4,5,6),插入之后是這樣的
一般我們接觸最多的是二叉樹,也就是一個(gè)父節(jié)點(diǎn)最多有兩個(gè)子節(jié)點(diǎn)。2-3樹與二叉樹的不同之處在于,一個(gè)父節(jié)點(diǎn)可以有兩個(gè)子節(jié)點(diǎn),也可以有三個(gè)子節(jié)點(diǎn),并且其也滿足類似二叉搜索樹的性質(zhì)。還有最重要的,2-3樹的所有葉子節(jié)點(diǎn)都在同一層,且最后一層不能有空節(jié)點(diǎn),類似于滿二叉樹。
我們依次插入10,9,8,7,6,5,4,3,2,1來看一下2-3數(shù)是如何進(jìn)行自平衡的。
2-3樹在插入元素之前首先要進(jìn)行一次未命中的查找,然后將元素插入葉子節(jié)點(diǎn)中,之后再進(jìn)行平衡操作,下面具體說明。
首先插入10,如下圖
那么紅黑樹與2-3樹有什么關(guān)系呢?現(xiàn)在我們對(duì)2-3樹進(jìn)行改造,改造成一個(gè)二叉樹。怎么改造呢?對(duì)于2節(jié)點(diǎn),保持不變;對(duì)于3節(jié)點(diǎn),我們首先將3節(jié)點(diǎn)中左側(cè)的元素標(biāo)記為紅色,如下圖2所示。
然后我們將其改造成圖3的形式;再將3節(jié)點(diǎn)的位于中間的子節(jié)點(diǎn)的父節(jié)點(diǎn)設(shè)置為父節(jié)點(diǎn)中那個(gè)紅色的節(jié)點(diǎn),如圖4的所示;最后我們將圖4的形式改為二叉樹的樣子,如圖5所示。圖5是不是很熟悉,沒錯(cuò),這就是我們常常提到的大名鼎鼎的紅黑樹了。關(guān)于“什么是紅黑樹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。