[C++] Wstawianie do drzewa binarnego

rafal9541
Użytkownik
Użytkownik
Posty: 63
Rejestracja: 31 sty 2012, o 20:38
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 11 razy
Pomógł: 1 raz

[C++] Wstawianie do drzewa binarnego

Post autor: rafal9541 »

Proszę o sprawdzenie czy funkcja wstawiania nowego elementu do drzewa jest poprawna:

Kod: Zaznacz cały

void wstaw(wezel*&korzen,int x)
{
	if(korzen==NULL)
	{
		wezel*nowy=new wezel;
		nowy->elem=x;
		nowy->lewy=NULL;
		nowy->prawy=NULL;
		return;
	}
		if(korzen->elem>x)
			wstaw(korzen->lewy,x);
		else if(korzen->elem<x)
		wstaw(korzen->prawy,x);
		else return;
	
}
Błąd występuje w wierszu 11 przy kompilacji programu.
Ostatnio zmieniony 26 sty 2013, o 14:36 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
abc666

[C++] Wstawianie do drzewa binarnego

Post autor: abc666 »

Jaki błąd, jak wygląda struktura węzeł?
rafal9541
Użytkownik
Użytkownik
Posty: 63
Rejestracja: 31 sty 2012, o 20:38
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 11 razy
Pomógł: 1 raz

[C++] Wstawianie do drzewa binarnego

Post autor: rafal9541 »

struktura wygląda tak:

Kod: Zaznacz cały

struct wezel
{
	int elem;
	wezel*lewy;
	wezel*prawy;
};


Błąd:

Kod: Zaznacz cały

Unhandled exception at 0x008d158f in m.exe: 0xC0000005: Access violation reading location 0xcdcdcdcd.



Tutaj jest mój main:

Kod: Zaznacz cały

int main()
{
	wezel*korzen=new wezel;
	wstaw(korzen,10);
	wstaw(korzen,12);
	wstaw(korzen,15);
	wstaw(korzen,20);
	wstaw(korzen,22);
	wstaw(korzen,25);
	wstaw(korzen,27);
	wstaw(korzen,28);
	wstaw(korzen,30);
	wstaw(korzen,35);

	wypisz(korzen);
	system("pause");
return 0;
}
Ostatnio zmieniony 26 sty 2013, o 14:59 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi [code]
m-2
Użytkownik
Użytkownik
Posty: 55
Rejestracja: 4 maja 2011, o 13:37
Płeć: Mężczyzna
Podziękował: 2 razy
Pomógł: 14 razy

[C++] Wstawianie do drzewa binarnego

Post autor: m-2 »

Nie wiem co może powodować ten błąd, ale tworzysz nowy wezel, a nie masz się jak do niego później odwołać. Dopisz

Kod: Zaznacz cały

korzen=nowy;
w warunku

Kod: Zaznacz cały

if(korzen==NULL)
ODPOWIEDZ