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

Minimum i maksimum w BST

VPS Starter Arubacloud
0 głosów
176 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,900 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,780 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,726 wizyt
pytanie zadane 29 października 2017 w C i C++ przez foruminfa Początkujący (310 p.)
0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 27 marca 2021 w Java przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 28 listopada 2023 w C i C++ przez natalia2002. Początkujący (370 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...