• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Minimum i maksimum w BST

Object Storage Arubacloud
0 głosów
197 wizyt
pytanie zadane 24 lutego 2023 w C i C++ przez HUBSON2912 Obywatel (1,300 p.)

Witam,

rozbudowuje swoje drzewo wyszukiwań BST. Chciałem napisać funkcje, które znajdą wartość minimalną i maksymalną. Jednak funkcje te działają na odwrót, a nie chciałbym używać ich zwyczajnie odwrotnie, tylko żeby działały tak jak powinny. Poniżej zamieszczam kod, wraz z funkcją dodającą elementy, bo może źle zapisuje dane. Z góry dzięki.

struct W
{
    int wart;
    W *lewy=nullptr,*prawy=nullptr;
};
void dodaj(W *&wierz, int a)
{
	if(!wierz)
	{
		wierz=new W;
		wierz->lewy=wierz->prawy=nullptr;
		wierz->wart=a;
	}
	if(wierz->wart<a) dodaj(wierz->lewy,a);
	else if(wierz->wart>a) dodaj(wierz->prawy,a);
}
void minimum(W *&wierz)
{
    if(!wierz)  return;
    else if(!wierz->lewy)   cout<<wierz->wart<<endl;
    else    minimum(wierz->lewy);
}
void maksimum(W *&wierz)
{
    if(!wierz)  return;
    else if(!wierz->prawy)   cout<<wierz->wart<<endl;
    else    maksimum(wierz->prawy);
}

 

2 odpowiedzi

+1 głos
odpowiedź 24 lutego 2023 przez Whistleroosh Maniak (56,980 p.)
wybrane 24 lutego 2023 przez HUBSON2912
 
Najlepsza
if(wierz->wart<a) dodaj(wierz->lewy,a);
else if(wierz->wart>a) dodaj(wierz->prawy,a);

dodajesz na odwrót. Większy element idzie do prawego poddrzewa, mniejszy do lewego

+1 głos
odpowiedź 24 lutego 2023 przez tangarr Mędrzec (154,860 p.)
Twoje drzewo z lewej strony trzyma elementy większe a w prawej mniejsze. Jeżeli chcesz, żeby było zgodnie z definicją to musisz to odwrócić.
Nie wiem czy zauważyłeś, ale twoje drzewo nie pozwala na dodawanie duplikatów.
 

PS. Zastanów się nad zwracaniem węzła zamiast wypisywania wartości.

Podobne pytania

0 głosów
1 odpowiedź 2,751 wizyt
pytanie zadane 29 października 2017 w C i C++ przez foruminfa Początkujący (310 p.)
0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 27 marca 2021 w Java przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 90 wizyt
pytanie zadane 28 listopada 2023 w C i C++ przez natalia2002. Początkujący (400 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...