Witam, mam problem z drzewami binarnymi. wiem jak się tworzy pierwszy węzeł, ale żeby stworzyć jego "syna" trzeba jakoś podać wartość ojca. W książce którą przerabiam jest przykładowo:
wstaw (NULL, 5);
wstaw (<drzewo o wierzchołku 5> , 10)
Tylko pytanie jak odwołać się do drzewa o wierzchołku 5? jest ono zwracane przez funckje, tylko nie wiem jak mogę go użyć. Rozumiem jak to wszystko ma przebiegać, tylko nie wiem jak powinienem to zrobić. Może jak z listą, po prostu tę wartość zapisywać do jakiejś zmiennej wskaźnikowej
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
struct dane_drzewa
{
int wartosc;
dane_drzewa *lewy;
dane_drzewa *prawy;
};
dane_drzewa *lista = nullptr;
dane_drzewa *buduj_drzewo (dane_drzewa *drzewo, int klucz)
{
if (drzewo == nullptr)
{
dane_drzewa *nowe_drzewo = new dane_drzewa;
nowe_drzewo -> lewy = nullptr;
nowe_drzewo -> prawy = nullptr;
nowe_drzewo -> wartosc = klucz;
return nowe_drzewo;
}
if (klucz < drzewo -> wartosc)
{
drzewo -> lewy = buduj_drzewo (drzewo -> lewy, klucz);
}
else
{
drzewo -> prawy = buduj_drzewo (drzewo -> prawy, klucz);
}
return drzewo;
}
dane_drzewa *szukaj (dane_drzewa *drzewko, int klucz)
{
if (drzewko == nullptr)
{
return nullptr;
}
else if (klucz == drzewko -> wartosc)
{
return drzewko;
}
else if (klucz < drzewko -> wartosc)
{
return szukaj( drzewko -> lewy, klucz);
}
}
main()
{
buduj_drzewo( nullptr,10 );
buduj_drzewo( ? , 15);
}
?