Dodawanie elementów do drzewa

0

Witam !
Chciałem w sposób rekurencyjny zaimplementować dodawanie kolejnych elementów do drzewa. Napisałem kod lecz wyskakuje mi breakpoint. Mógłby mi ktoś z tym pomóc, coś poradzić ?

Oto kod:



<iostream>
using namespace std;
 

struct tree
{
	int value;
	tree* right;
	tree* left;
};

void add(tree*& root)
{
	int wartosc;
	cout<<"Podaj wartosc\t";
	cin>>wartosc;
	root->value=wartosc;
	cout<<"Czy chcesz dalej dodawac:\n1-TAK\n2-NIE"<<endl;
	int x;
	cin>>x;
	if(x==1)
	{

		tree* temp=new tree;
		temp=root->left;
		add(temp);
		temp=root->right;
		add(temp);
	}
	
}

int main()
{
	tree* root=new tree;
	add(root);

	cout<<endl<<endl;
     system("PAUSE");
}
 
0

Nie możesz w rekurencyjnej funkcji mieszać funkcjanolności z interfejsem (w żadnej funkcji nie powinno się tego robić) ale w rekurencyjnej to prawie niemożliwe przynajmniej na twoim poziomie.

        tree* temp=new tree;
        temp=root->left;

Czy cokolwiek rozumiesz w przydzieleniu pamięci, w strukturach czy ogólnie w programowaniu?

0

Co jest w tym fragmencie źle ? Przecież tworze nowy obiekt struktury i ustawiam wskaźnik poprzedniego elementu na niego.

0

Nie, przydzielasz pamięć pod wskaźnik temp, wywalasz zawartość temp w cholerę (powodujesz wyciek pamięci) i pod zmienną temp podstawiasz lewy element nie koniecznie istniejącego elementu (powodujesz access violation).

0

czyli ma być po prostu:

 
tree* temp;
temp=root->left;

czy

 
tree* temp;
temp=root;

a potem jakoś do funkcji inaczej to przesłać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1