Witam mam zadanie do wykonania, które polega na napisaniu klasy, która będzie w stanie wygenerować drzewo stringów.
int main(...)
{
Tree* root = new Tree("nazwa drzewa");
Tree* galaz1 = root->AddSub("galaz 1"); // funkcja ta tworzy galaz w roocie i zwraca wskaznik
Tree* galaz2 = root->AddSub("galaz 2");
Tree* galaz3 = root->AddSub("galaz 3");
Tree* galaz1_1 = galaz1->AddSub("galaz 1.1");
Tree* galaz2_1 = galaz2->AddSub("galaz 2.1");
Tree* galaz2_2 = galaz2->AddSub("galaz 2.2");
Tree* galaz2_1_2 = galaz2_1->AddSub("galaz 2.1.2");
Jak do tej pory (korzystając z: https://4programmers.net/Forum/C_i_C++/133771-Drzewo_w_C++) zrobiłem to:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Tree{
public:
string name;
vector<Tree*> children;
Tree(string name_) : name(name_) { };
AddSub(string name){
; //Co miałoby się znaleźć w tej metodzie?
}
};
int nesting = 0;
void print(Tree *dir) {
for (int i = 0; i < nesting; ++i) {
cout << ' ';
}
cout << dir->name << endl;
++nesting;
for_each(dir->children.begin(), dir->children.end(), print);
--nesting;
}
int main()
{
Tree* root = new Tree("nazwa drzewa");
Tree* galaz1 = root->AddSub("galaz 1");
Tree* galaz2 = root->AddSub("galaz 2");
Tree* galaz3 = root->AddSub("galaz 3");
Tree* galaz1_1 = galaz1->AddSub("galaz 1.1");
Tree* galaz2_1 = galaz2->AddSub("galaz 2.1");
Tree* galaz2_2 = galaz2->AddSub("galaz 2.2");
Tree* galaz2_1_2 = galaz2_1->AddSub("galaz 2.1.2");
root->children.push_back(galaz1);
galaz1->children.push_back(galaz2);
galaz2->children.push_back(galaz3);
galaz1_1->children.push_back(galaz1);
galaz2_1->children.push_back(galaz2);
galaz2_2->children.push_back(galaz2);
galaz2_1_2->children.push_back(galaz2_1);
print(root);
return 0;
}
Nie wiem co miałbym zapisać w metodzie AddSub, która jest wywoływana w mainie? Wydaje mi si, że powinna coś zwracać ponieważ wartość jest przypisywana do galaz1, galaz2...
Mógłby mi ktoś pomóc?