Nietypowe drzewo c++

0

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!

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.

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;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1