В другой день еще одна ошибка сегмента, которую я не понимаю, я пытаюсь выполнить попытки в первый раз, и это оказывается довольно сложной задачей, я думаю, было бы очень полезно, если бы кто-то мог сказать мне, что я ' я делаю неправильно, вероятно, помог бы мне понять OOP также лучше, я полагаю, потому что я думаю, что ошибка связана с этим.
Ошибка возникает при поиске, и я не смог ее понять сам использую отладчик.
Вот код:
#include <vector>
#include <iostream>
using std::string, std::cout, std::vector;
class TrieNode {
private:
bool isLeaf;
vector<TrieNode*> ar = vector<TrieNode*>(26);
public:
TrieNode() {
isLeaf = false;
for(int i = 0; i < 26; i++) ar[i] = nullptr;
}
void insert(TrieNode *root, string key) {
TrieNode *crawl = root;
for(int i = 0; i < key.size(); i++) {
if(!crawl->ar[key[i]]) {
crawl->ar[key[i]] = new TrieNode();
}
crawl = crawl->ar[key[i]];
}
crawl->isLeaf = true;
}
bool search(TrieNode *root, string key) {
TrieNode *crawl = root;
for(int i = 0; i < key.size(); i++) {
if(!crawl->ar[key[i]]) {
return false;
}
crawl = crawl->ar[key[i]];
}
return crawl->isLeaf;
}
};
int main() {
TrieNode* head = new TrieNode();
head->insert(head, "hello");
cout << head->search(head, "hello");
}