Nietypowe drzewo c++

Nietypowe drzewo c++
BM
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Postów:4
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!

edytowany 1x, ostatnio: blaszczak.m
lion137
  • 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.


MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
0
Kopiuj
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;
};

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
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.