Implementácie

Vyhľadávanie zadanej hodnoty v strome

 
 
//vyhladavanie zadanej hodnoty "hladany" v binarnom strome urcenom uzlom "uzol" pomocou cyklu while
//funkcia vracia ukazovatel na najdeny uzol (v pripade neuspechu vyhladavania vracia 0)
CUzol* najdi_cykl_uzol(CUzol* uzol, int hladany){
	while(uzol) {
		if (uzol->hodnota() > hladany) uzol=uzol->lavy();
		else if (uzol->hodnota() < hladany) uzol=uzol->pravy();
		else return uzol;
	}
	return 0;
}
 
//vyhladavanie zadanej hodnoty "hladany" v binarnom strome urcenom uzlom "uzol" pomocou cyklu while
//funkcia vracia ukazovatel na najdeny uzol (v pripade neuspechu vyhladavania vracia 0)
CUzol* najdi_cykl2_uzol(CUzol* uzol, int hladany){
	while(uzol && uzol->hodnota()!=hladany) {
		if (uzol->hodnota() > hladany) uzol=uzol->lavy();
		else uzol=uzol->pravy();
	}
	return uzol;
}
 
//vyhladavanie zadanej hodnoty "hladany" v binarnom strome urcenom uzlom "uzol"
//funkcia vracia logicku premennu (ak sa zadana hodnota v strome nachadza true, inak false) 
bool najdi_bool(CUzol* uzol, int hladany){
	if (!uzol) return false;
	else if (uzol->hodnota()==hladany) return true;
	else if (uzol->hodnota() > hladany) return najdi_bool(uzol->lavy(), hladany);
	else return najdi_bool(uzol->pravy(), hladany);
}
 
//vyhladavanie zadanej hodnoty "hladany" v binarnom strome urcenom uzlom "uzol" pomocou rekurziou
//funkcia vracia ukazovatel na najdeny uzol (v pripade neuspechu vyhladavania vracia 0) 
CUzol* najdi_rek_uzol(CUzol* uzol, int hladany){
	if (!uzol) return 0;
	else if (uzol->hodnota() > hladany) return (najdi_rek_uzol(uzol->lavy(), hladany));
	else if (uzol->hodnota() < hladany) return (najdi_rek_uzol(uzol->pravy(), hladany));
	else return uzol;
}
 
//vyhladavanie zadanej hodnoty "hladany" v binarnom strome urcenom uzlom "uzol" pomocou rekurzie
//funkcia vracia ukazovatel na najdeny uzol (v pripade neuspechu vyhladavania vracia 0)
CUzol* najdi_rek2_uzol(CUzol* uzol, int hladany){
	if (!uzol || uzol->hodnota()==hladany) return uzol;
	else if (uzol->hodnota() > hladany) return (najdi_rek2_uzol(uzol->lavy(), hladany));
	else return (najdi_rek2_uzol(uzol->pravy(), hladany));
}