Úloha 5.2
Trie (prefixový strom) je efektívna dátová štruktúra na ukladanie a vyhľadávanie reťazcov, najmä keď pracujeme s veľkým množstvom slov so spoločnými prefixami. Každý uzol v strome reprezentuje jedno písmeno a cesty od koreňa k listom tvoria uložené slová. Trie umožňuje rýchle vyhľadávanie, vkladanie aj mazanie slov v čase O(m), kde m je dĺžka slova, a využíva sa napríklad v autokompletizácii, slovníkoch a indexovaní textu. Čím viac slov je uložených v štruktúre tím je efektívnejšia.
Napíšte program, zdrojový kód, v jazyku C++ použitím štandardu C++17, ktorý realizuje nasledovnú činnosť.
Implementujte prefixový strom, Trie. Strom implementujte pomocou tried a dbajte na dodržanie princípov
zaprúzdrenia (private atribúty, getter, setter a ďalšie). Každý uzol stromu, až na koreňový uzol (root),
má označenie ‘label’ jedno písmeno (typ char). Prefixový strom je N-árny strom. Každý uzol obsahuje
aj označenie typu bool či ide o ukončenie slova. Ak má uzol označenia konca slova hodnotu true,
tak existuje cesta v strome (t.j. slovo), ktorého písmeno uzla je posledné písmeno a tak cesta k danému uzlu
predstavuje indexované slovo v strome.
Important
Dobre si rozmyslite ako implementujete kontajner pre uchovanie detí uzla, dbajte na efektívne prehľadávanie.
Implementujte metódy stromu:
bool insert(string word)- Vloží nové slovo do stromu. Metóda vráti hodnotutrueak bolo slovo úspešne vložené do stromu, inakfalse(napr. slovo už v strome existuje a tak nemôže byť vložené druhý krát).bool contains(string word)- Zistí či sa dané slovo nachádza v strome. Metóda vráti hodnotutrueak sa slovo nachádza v strome, inakfalse.
Príklady vstupov / výstupov programu
Ak do prefixového stromu vložíme nasledovné slová:
Trie trie;
trie.insert("Milan");
trie.insert("Martin");
trie.insert("Martina");
trie.insert("Eva");Strom bude mať nasledovnú štruktúru (farebne sú označené konce slov)

Následne pre kontrolu prítomnosti slov:
trie.contains("Milan") == true
trie.contains("Pavol") == true
trie.contains("Martina") == true
trie.contains("Martir") == trueRozbaľ pre ukážku riešenia
Musím si počkať kým sa tu objaví príklad riešenia.
Nezabudni, že najviac sa naučíš ak to vypracuješ sám. 😉