Kapitola 3.

Vyhľadávanie v binárnych stromoch

 
 
Binárne stromy sú abstraktné dátové štruktúry prispôsobené na vyhľadávanie. Každý uzol stromu môže mať najviac dvoch potomkov, na ktorých ukazujú jeho ukazovatele. Okrem toho ešte uchováva hodnotu prvku. V ľavom podstrome ľubovoľného uzla sa nachádzajú iba prvky menšie ako v uzle a v pravom podstrome sa nachádzajú iba prvky väčšie ako v uzle. Každý podstrom je potom samostatným binárnym stromom.
 
Výstupom týchto algoritmov býva zväčša ukazovateľ na uzol, ktorý obsahuje hľadanú hodnotu. V prípade, že sa v strome nenachádza hľadaná hodnota, je algoritmom vrátený nulový ukazovateľ. Výstupom môže byť aj logická premenná odpovedajúca úspešnosti vyhľadávania. Počet uzlov v strome budeme označovať písmenom n.

Zoznam stránok venujúcich sa stromom

Porovnanie algoritmov pre stromy

Triedy použité na analýzu a testovanie vybraných algoritmov

Ako môžeme vidieť, členskými premennými triedy sú počty porovnaní, cyklov (pre algoritmy využívajúce cyklus) a volaní (pre algoritmy využívajúce rekurziu). Toto budú hneď po čase trvania algoritmu najdôležitejšie ukazovatele jeho efektívnosti.
 
//uzol pre binarne stromy
class CUzol {
	int hodnota_;	//hodnota uzla
	CUzol* lavy_;	//ukazovatel na laveho nasledovnika
	CUzol* pravy_;	//ukazovatel na praveho nasledovnika
public:
.
.
.
};

//binarny strom	
class CStrom{
	CUzol* koren_;	//ukazovatel na koren stromu
	//statisticke premenne
	int p_a_porovnani_;
	int p_b_porovnani_;
	int p_a_cyklov_;
	int p_a_volani_;
public:
.
.
.
};