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: . . . };
|
|