紅黑樹原理解析以及Java實現

2021-08-17 17:57:58 字數 894 閱讀 9125

private

static

final

boolean red = true;

private

static

final

boolean black = false;

private node root;//二叉查詢樹的根節點

//結點資料結構

private

class

node

}/**

* 獲取整個二叉查詢樹的大小

*@return

*/public

intsize()

/** * 獲取某乙個結點為根結點的二叉查詢樹的大小

*@param x

*@return

*/private

intsize(node x) else

}private

boolean

isred(node x)

return x.color == red;

}

/**

* 左旋轉

*@param h

*@return

*/private node rotateleft(node h)

/**

* 右旋轉

*@param h

*@return

*/private node rotateright(node h)

/**

* 顏色轉換

*@param h

*/private

void

flipcolors(node h)

java實現紅黑樹

package com.lsl public class redblacktree 節點左旋方法,將當前節點變為其右子樹的左子樹 private void leftrotate redblacknode x y.parent x.parent 將x的父親變為y的父親 if x.parent null...

紅黑樹原理

若左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若右子樹不為空,則右子樹上所有節點的值都大於根節點的值 且左右子樹都為二叉搜尋樹 查詢 必須從根節點開始查詢 如果值比根節點大則查詢右子樹,否則左子樹,直到找到節點 插入 與查詢類似 逐個節點對比,直到找到滿足條件的null,就插入到相應位置 ...

理解紅黑樹

在樹裡面的節點不是紅色的就是黑色的,沒有其他顏色,要不怎麼叫紅黑樹呢,是吧。性質二 根節點是黑色 根節點總是黑色的。它不能為紅。性質三 每個葉節點 nil或空節點 是黑色 這個可能有點理解困難,可以看圖 這個就是乙個紅黑樹,nil節點是個空節點,並且是黑色的。性質四 每個紅色節點的兩個子節點都是黑色...