Trie implementation for small-case English alphabets a-z
More...
|
| trie ()=default |
| Class default constructor.
|
|
void | insert (const std::string &str) |
|
bool | search (const std::string &str, int index) |
|
bool | deleteString (const std::string &str, int index) |
|
|
uint8_t | char_to_int (const char &ch) const |
| Convert a character to integer for indexing.
|
|
bool | search (const std::shared_ptr< trie > &root, const std::string &str, int index) |
|
|
std::array< std::shared_ptr< trie >, NUM_CHARS<< 1 > | arr |
| Recursive tree nodes as an array of shared-pointers.
|
|
bool | isEndofWord = false |
| identifier if a node is terminal node
|
|
|
static constexpr uint8_t | NUM_CHARS = 26 |
| Number of alphabets.
|
|
Trie implementation for small-case English alphabets a-z
Definition at line 24 of file trie_tree.cpp.
◆ char_to_int()
uint8_t data_structures::trie::char_to_int |
( |
const char & | ch | ) |
const |
|
inlineprivate |
Convert a character to integer for indexing.
- Parameters
-
- Returns
- unsigned integer index
Definition at line 37 of file trie_tree.cpp.
37 {
38 if (ch >= 'A' && ch <= 'Z') {
39 return ch - 'A';
40 } else if (ch >= 'a' && ch <= 'z') {
42 }
43
44 std::cerr << "Invalid character present. Exiting...";
45 std::exit(EXIT_FAILURE);
46 return 0;
47 }
static constexpr uint8_t NUM_CHARS
Number of alphabets.
◆ deleteString()
bool data_structures::trie::deleteString |
( |
const std::string & | str, |
|
|
int | index ) |
|
inline |
removes the string if it is not a prefix of any other string, if it is then just sets the ::data_structure::trie::isEndofWord to false, else removes the given string
- Note
- the function ::data_structure::trie::deleteString might be erroneous
- Todo
- review the function ::data_structure::trie::deleteString and the commented lines
- Parameters
-
str | string to remove |
index | index to remove from |
- Returns
true
if successful
-
false
if unsuccessful
Definition at line 133 of file trie_tree.cpp.
133 {
134 if (index == str.length()) {
136 return false;
137 }
139
140
141
142
143 return true;
144 }
147 return false;
148 }
150 if (var) {
153 return false;
154 } else {
155 int i = 0;
158 return false;
159 }
160 }
161 return true;
162 }
163 }
164
165
166 std::cout << __func__ << ":" << __LINE__
167 << "Should not reach this line\n";
168 return false;
169 }
std::array< std::shared_ptr< trie >, NUM_CHARS<< 1 > arr
Recursive tree nodes as an array of shared-pointers.
bool isEndofWord
identifier if a node is terminal node
uint8_t char_to_int(const char &ch) const
Convert a character to integer for indexing.
bool deleteString(const std::string &str, int index)
◆ insert()
void data_structures::trie::insert |
( |
const std::string & | str | ) |
|
|
inline |
insert string into the trie
- Parameters
-
str | String to insert in the tree |
Definition at line 76 of file trie_tree.cpp.
76 {
77 std::shared_ptr<trie> root(nullptr);
78
79 for (const char& ch : str) {
81 if (root) {
82 if (root->arr[j]) {
83 root = root->arr[j];
84 } else {
85 std::shared_ptr<trie> temp(
new trie());
86 root->arr[j] = temp;
87 root = temp;
88 }
91 } else {
92 std::shared_ptr<trie> temp(
new trie());
94 root = temp;
95 }
96 }
97 root->isEndofWord = true;
98 }
trie()=default
Class default constructor.
◆ search() [1/2]
bool data_structures::trie::search |
( |
const std::shared_ptr< trie > & | root, |
|
|
const std::string & | str, |
|
|
int | index ) |
|
inlineprivate |
search a string exists inside a given root trie
- Parameters
-
str | string to search for |
index | start index to search from |
- Returns
true
if found
-
false
if not found
Definition at line 55 of file trie_tree.cpp.
56 {
57 if (index == str.length()) {
58 if (!root->isEndofWord) {
59 return false;
60 }
61 return true;
62 }
64 if (!root->arr[j]) {
65 return false;
66 }
67 return search(root->arr[j], str, index + 1);
68 }
bool search(const std::shared_ptr< trie > &root, const std::string &str, int index)
◆ search() [2/2]
bool data_structures::trie::search |
( |
const std::string & | str, |
|
|
int | index ) |
|
inline |
search a string exists inside the trie
- Parameters
-
str | string to search for |
index | start index to search from |
- Returns
true
if found
-
false
if not found
Definition at line 106 of file trie_tree.cpp.
106 {
107 if (index == str.length()) {
109 return false;
110 }
111 return true;
112 }
115 return false;
116 }
118 }
◆ arr
std::array<std::shared_ptr<trie>, NUM_CHARS << 1> data_structures::trie::arr |
|
private |
Recursive tree nodes as an array of shared-pointers.
Definition at line 28 of file trie_tree.cpp.
◆ isEndofWord
bool data_structures::trie::isEndofWord = false |
|
private |
identifier if a node is terminal node
Definition at line 29 of file trie_tree.cpp.
◆ NUM_CHARS
uint8_t data_structures::trie::NUM_CHARS = 26 |
|
staticconstexprprivate |
The documentation for this class was generated from the following file: