Obsah / Utility / RBTREE / Struktura popisovačů RB-stromu
Zdrojový kód: INCLUDE\UTIL\RBTREE.INC, UTIL\RBTREE.ASM
Struktura popisovačů RB-stromu
|
Kořen i uzel RB-stromu používají společnou část popisovače, RBCOMMON. Struktura RBCOMMON obsahuje na svém začátku popisovač seznamu položek LIST, který slouží k rychlému procházení seznamu po položkách. Za popisovačem seznamu je proměnná RB_Color, která obsahuje barvu uzlu. Možné hodnoty jsou RB_RED (= číslo 0) a RB_BLACK (= číslo 1). Následuje proměnná RB_Flags obsahující příznaky. Jediným možným příznakem je bit RB_ROOT, který indikuje, že položka je kořenem stromu (root) a neobsahuje tedy platná data. Není-li bit RB_ROOT nastaven, jedná se o běžný uzel stromu. Poslední proměnnou je RB_DataW. Jedná se o volitelnou proměnnou, která může být použita k uložení třídicího klíče uzlů.
Popisovač kořene stromu RBROOT obsahuje na svém začátku společný popisovač RBCOMMON s nastaveným příznakem RB_ROOT. Za ním následuje proměnná RBR_Node, což je ukazatel na výchozí (kořenový) uzel stromu. Je-li vynulován, neobsahuje strom žádný uzel. Za ukazatelem následuje proměnná RBR_Count obsahující celkový počet uzlů ve stromu. Kořen stromu je pouze popisovačem stromu, není uzlem stromu s platnými daty.
Popisovač uzlu stromu RBNODE obsahuje na svém začátku společný popisovač RBCOMMON s vynulovaným příznakem RB_ROOT. Za ním následuje proměnná RBN_Parent, což je ukazatel na uzel rodiče. Obsahuje-li nulu, je rodičem kořen stromu. Další dva ukazatele, RBN_Left a RBN_Right, ukazují na levý a pravý uzel stromu. Levý uzel má nižší hodnotu třídicího klíče, pravý uzel vyšší hodnotu. Obsahují-li ukazatele nulu, nenásleduje žádný další uzel. Návěští RBN_Data označuje začátek možných dat uzlu. Z důvodu efektivnosti algoritmů je požadováno, aby proměnná s ukazatelem na pravý uzel následovala bezprostředně za proměnnou s ukazatelem na levý uzel.
Obsah / Utility / RBTREE / Struktura popisovačů RB-stromu