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節點是個空節點,並且是黑色的。性質四 每個紅色節點的兩個子節點都是黑色...