cout danych z węzła drzewa binarnego

cout danych z węzła drzewa binarnego
K0
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:29
0

Cześć. Kiedy chcę wyświetlić na terminal coś z korzenia drzewa binarnego wychodzą mi błędne dane.
main.cpp :

Kopiuj
int main()
{

	Bst<int>* drzewo = new Bst<int>();
	drzewo->add_new(100);

	drzewo->display();

	delete drzewo;

	return 0;
}

bst.h :

Kopiuj
template <class T>
class Bst {
[...]
Bst() { }
[...]
void display() {
		if (!root) {
			std::cout << "binary search tree is empty" << std::endl;
		}
		else {
			std::cout << "binary search tree:\nsize: " << size << "\nheight: " << height << "\n0 = nullptr\n";
			std::cout << "{\n(" << root->index << ": [p: 0, l: " << ((root->left != nullptr) ? 0 : root->left->index) << ", r: " << ((root->right != nullptr) ? 0 : root->right->index) << "], data: " << root->data << ")\n";
			
		}
		std::cout << std::endl;
	}

** całość kodu: https://godbolt.org/z/oGasv8 **

edytowany 1x, ostatnio: kategoria000
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Szczecin
3
Kopiuj
	void add_new(T value) {
		Node* temp = new Node(value);
		temp->index = last_index++;
		if (!root) {
			root = temp;
			size++;
		}
		else {
			//...
		}

		delete temp;
	}

Deletujesz sobie roota :​)

Ogółem, o ile przy samodzielnej implenentacji drzewa rzeczywiście trzeba samodzielnie zadbać o zarządzanie zasobami, to już z samym drzewem w main() polecam lekturę:

Oraz dodatkowo:


edytowany 2x, ostatnio: kq
enedil
W BST akurat można mieć shared pointery na dzieci i na rodzica
kq
Nie będzie wtedy cyklicznych referencji? Przynajmniej na rodzica użyłbym weak pointera
enedil
A tak, weak pointer na rodzica może być bardziej sensowny
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:2326
0

Pokaż output

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.