3.3 Balancerede binære søgetræer

I dette afsnit betragtes en slags binære søgetræer som garanterer logaritmiske køretider. Træerne er næsten perfekt balancerede, således at højden garanteret ikke overstiger \(2 \operatorname{lg} N\).

2-3-søgetræer.

Vi opnår den nødvendige fleksibilitet for at kunne garantere søgertræernes balance ved at tillade knuder at indeholder mere end én nøgle.

Definition.

Et 2-3-søgetræ (eller bare 2-3-træ) er et træ, som er enten tomt eller

Anatomy of a 2-3 tree
I et perfekt balanceret 2-3-søgetræ opretholdes invarianten, at alle nulreferencer har samme afstand fra roden.

Påstand.

Søgning og indsættelse i et 2-3-søgetræ med \(N\) nøgler besøger højst \(\operatorname{lg} N\) knuder.

Typical 2-3 tree built from random keys

Vi er dog kun kommet halvvejs i at beskrive en fulstændig implementation. Godt nok ville det være muligt at skrive kode som implementerer transformationerne på datatyper svarende til 2-, 3- og måske sågar 4-knuder, men en sådan direkte repræsentation er meget kringlet at håndtere.

Rød-sorte træer.

Vi betrager nu en enkel repræsentation af 2-3-søgetræer kaldet rød-sorte, binære søgetræer eller bare rød-sorte træer, som leder til en naturlig implementation af indsættelsesstrategien.

Implementation.

Programmet RedBlackBST.java implementerer et venstreorienteret rødt-sort træ. Programmet RedBlackLiteBST.java er en enklere udgave, der kun implementerer indsættelse og søgning.

Red-black BST construction

Påstand.

Højden af et rødt-sort træ med \(N\) knuder er højst \(2 \operatorname{lg} N\).

Påstand.

I et rødt-sort træ tager følgende operationer logaritmisk tid i værste fald: søgninge, indsættelse, minimum, maksimum, gulv, loft, rang, selektion, fjernelse af minimum, fjernelse af maksimum, fjernelse, og intervaloptælling.

Egenskab.

Gennemsnitslængden af en vej fra roden til nogen knude i et rødt-sort træ er med \(N\) knuder er \(\sim 1.00 \operatorname{lg} N\).