#ifndef TRIE_HPP #define TRIE_HPP #include #include #include #include "../Relationship/Relationship.hpp" #define TrieRelationship map #define TrieKids map #define RelatedTries multimap using namespace std; class Trie { public: Trie () : fullword(false), letter('\0'), parent(NULL) {}; Trie (Trie * newparent, char newletter) : fullword(false), letter(newletter), parent(newparent) {}; void AddWord(const string newword); Trie * FindWord(string newword); string GetName(); void Relate(Trie * sibling, const int score); void Repr(string leader); private: bool fullword; char letter; Trie *parent; TrieRelationship related; TrieKids children; Trie * CreateChild(const char letter); void GiveRelate(RelatedTries & list); void SetFinal() { fullword = true; }; }; #endif