首页 > 代码库 > 字典树(Trie)的基本实现(C++)
字典树(Trie)的基本实现(C++)
简要说明一下:
主要实现了两个操作,get,set
get用来查找字符串键值对应的value,set则用来向字典树添加key-value对。
这个实现参考自Algorithms 4th Edition, Robert Sedgewick
const int inf = -(1 << 30);struct Node{ int val; Node** next; Node(){ val = -(1 << 30); next = new Node*[256]; for (int i = 0; i < 256; i++) next[i] = NULL; }};class Tries{private: Node* root; Node* get(Node* root, string key, int d) { if (root == NULL) return NULL; if (d == key.size()) return root; return get(root->next[key[d]], key, d + 1); } Node* set(Node* root, string key, int val, int d) { if (root == NULL) root = new Node(); if (d == key.length()) { root->val = val; return root; } root->next[key[d]] = set(root->next[key[d]], key, val, d + 1); return root; }public: Tries():root(NULL){ } int get(string& key) { Node* ans = get(root, key, 0); if (ans == NULL) return inf; return ans->val; } void set(string &key, int val) { root = set(root, key, val, 0); }};
字典树(Trie)的基本实现(C++)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。