Moderní programování v C++11

Strom

Implementujte datovou strukturu reprezentující obecný strom.

Základní popis

Připravte datovou strukturu schopnou reprezentovat strom (můžete vyjít ze vzorového řešení první části). Datová struktura musí být schopná reprezentovat obecný strom (bez omezení množství potomků na uzlech). Strom by měl umožňovat efektivní oprace přidávání, odebírání a přehazování uzlů.

Implementační požadavky

Kde je to možné používejte STL a chytré ukazatele. Výpočetní operace které jde paralelizovat implementujte pomocí asynchronních prvků C++11.

Výpočetní operace

  • suma
    • součet hodnot uzlů (podle sémantiky vnitřního datového typu)
  • maximální hloubka
    • maximální hloubka stromu (kořen má hloubku 1)
  • minimální hloubka listu
    • list je uzel, který nemá žádné potomky
  • maximální hodnota
    • podle sémantiky vnitřního datového typu
  • maximální hodnota na listech
  • průměrná hodnota
  • průměrná hodnota na listech
  • průměrná hodnota na maximální hloubce