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

Drzewo binarne - wstawianie elementu

42 Warsaw Coding Academy
0 głosów
118 wizyt
pytanie zadane 20 stycznia 2020 w C i C++ przez Agnes Użytkownik (990 p.)

Chcę wywołać funkcję wstaw(), dlaczego to nie działa?

#include <cstdlib>


struct node
{
	int val;
	node* w_left;
	node* w_right;
};
node* wstaw(node* w_tree, int v)
{
	if (w_tree == NULL)		//jeśli drzewo jest puste
	{
		node* w_NewTree = new node;
		w_NewTree->w_left = NULL;
		w_NewTree->w_right = NULL;
		w_NewTree->val = v;
		return w_NewTree;
	}
	if (v < w_tree->val)
	{
		w_tree->w_left = wstaw(w_tree->w_left, v);
	}
	else
	{
		w_tree->w_right = wstaw(w_tree->w_right, v);
	}
	return w_tree;
}
int main()
{
	node* NTree = new node;
	wstaw(NTree, 10);
	

	return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 20 stycznia 2020 przez tangarr Mędrzec (155,180 p.)

W 32 linii tworzysz niezainicjowane drzewo. Jego pola zawierają to co wcześniej znajdowało się w tym miejscu pamięci. Twoja funkcja wstaw obsługuje tworzenie nowego drzewa. Użyj jej w prawidłowy sposób.

node* NTree = wstaw(nullptr, 10);

Ponadto proponowałbym kilka zmian kosmetycznych:
1. Używaj nullptr zamiast NULL
2. Nazwy klas i struktur zaczynaj dużą literą
3. Nazwy zmiennych zaczynaj małą literą
4. Nie używaj bibliotek C jeżeli nie jest to naprawdę potrzebne

Podobne pytania

+1 głos
1 odpowiedź 1,210 wizyt
+1 głos
0 odpowiedzi 285 wizyt

93,376 zapytań

142,377 odpowiedzi

322,517 komentarzy

62,724 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...