字典树是一种处理字符串很重要的树,我写了一个Demo,不会写的同学可以参考看看。
头文件自己加吧 :)
class TreeNode {
public:
int val;
unordered_map<char, TreeNode *> children;
};
class Tree {
public:
TreeNode *root;
Tree() {
root = new TreeNode();
};
void insert(string &str) {
TreeNode * cur = root;
for (int i = 0; i < str.size(); ++i) {
if (cur->children.find(str[i]) == cur->children.end()) {
cur->children[str[i]] = new TreeNode();
}
cur = cur -> children[str[i]];
}
}
bool search(string &str) {
for (int i = 0; i < str.size(); ++i) {
if (root->children.find(str[i]) == root -> children.end()) {
return false;
}
root = root -> children[str[i]];
}
if (root->children.empty()) {
return true;
}
return false;
}
};
int main(int argc, const char * argv[]) {
Tree *tree = new Tree();
string str = "qwerty";
tree->insert(str);
cout << tree->search(str) <<endl;
return 0;
}