Strona 1 z 1

[C++] Wstawianie do drzewa binarnego

: 26 sty 2013, o 14:32
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.

[C++] Wstawianie do drzewa binarnego

: 26 sty 2013, o 14:41
autor: abc666
Jaki błąd, jak wygląda struktura węzeł?

[C++] Wstawianie do drzewa binarnego

: 26 sty 2013, o 14:57
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;
}

[C++] Wstawianie do drzewa binarnego

: 26 sty 2013, o 15:46
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)