Witam, muszę napisać program, który na wejściu dostaje np.
4 (ilość par litera-liczba,) w zadaniu podane mam ze max to 45000;
a 1 b 2 c 2 d 4
Każda litera ma być dodana do drzewa, natomiast liczba po każdej literze oznacza ile gałęzi w dół wychodzi od litery.
a->b->c,d
Program ma zwracać to drzewo w postaci preorder();
Nie wiem jak mam się za to zabrać, zwykłe drzewa mają po 2 gałęzie, tu jest to inaczej zrobione.
Proszę o pomoc!
- Rejestracja:prawie 11 lat
- Ostatnio:ponad 7 lat
- Postów:4
0
edytowany 1x, ostatnio: blaszczak.m

- Rejestracja:ponad 8 lat
- Ostatnio:2 minuty
- Postów:4944
0
Coś takiego pisałem: https://github.com/lion137/Python-Data-Structures/blob/master/n_ary_trees.py do jakiegoś wyciągania informacji. Dzieci węzła są w dynamicznej tablicy (arraylist). Co prawda jest to Python, ale idea jest widoczna.

- Rejestracja:ponad 17 lat
- Ostatnio:2 minuty
0
template<class T>
class MultiTree
{
explicit MultiTree(T && value, MultiTree* parent = nullptr)
: mValue(std::forward(value));
, mParent(parent)
{}
auto GetValue() const -> T
{
return mValue;
}
auto childsBegin() const -> decltype(mChilds.begin())
{
return mChilds.begin();
}
auto childsEnd() const -> decltype(mChilds.end())
{
return mChilds.end();
}
MultiTree* addChildValue(T && value)
{
mChilds.emplace_back(new MultiTree<T>(std::forward(value), this));
return mChilds.back().get();
}
MultiTree* AddChild(std::unique_ptr<MultiTree<T>>&& child) const
{
child->mParent = this;
mChilds.emplace_back(std::move(child));
return mChilds.back().get();
}
public:
T mValue;
MultiTree* mParent = nullptr;
std::vector<std::unique_ptr<MultiTree<T>> > mChilds;
};
edytowany 4x, ostatnio: MarekR22
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.