
Uložení struktury binárního stromu
Dobrý den, mám problém a nevím si už rady.
Jedná se o to, že potřebuju uložit strukturu binárního stromu pomocí EBS. (nějak takto https://ibb.co/bRoKD5 - omlouvám se za kvalitu mojí kresby )
Jak vypadá uzel (zjednodušeně):
struct uzel {
const int hodnota;
std::unique_ptr<uzel> m_leva = nullptr, m_prava = nullptr;
uzel(const int& Hodnota) : hodnota(Hodnota) {}
};
Zatím to řeším tak, že mám rekurzivní funkci, která do vektoru přidává jednotlivé bajty (pak se převedou nakonec na jednotlivé bity).void export_ebs(std::unique_ptr<uzel>& podstrom, std::vector<std::uint8_t>& bajty) {
if (podstrom == nullptr) bajty.emplace(0);
export_ebs(podstrom->m_leva, bajty);
bajty.emplace(1);
export_ebs(podstrom->m_prava, bajty);
}
Bohužel tenhle způsob vynechá neexistující uzly, které jsou hlouběji jak jedna urověn.Podmínka je, že musí využívat jen existující uzly, a není možné vytvářet uzly prázdné.
Děkuji za jakýkoli nápad.