博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字典树(Trie)的基本实现(C++)
阅读量:4522 次
发布时间:2019-06-08

本文共 1196 字,大约阅读时间需要 3 分钟。

简要说明一下:

主要实现了两个操作,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);    }};

  

转载于:https://www.cnblogs.com/xlert/p/3961489.html

你可能感兴趣的文章
PCB新手值得一看《Protel使用中的问题》
查看>>
《Spring Boot实战》笔记(目录)
查看>>
Mongodb基础操作实践- -Mongodb Shell端
查看>>
命令模式——行为型模式(2)
查看>>
[转帖]Java 8新特性探究 前言
查看>>
什么是web框架之自定义
查看>>
unity里c# gc优化 -字符串
查看>>
.NET Core 获取配置文件appsettings.json 方法
查看>>
PHP文件上传与安全
查看>>
软件工程理论、方法与实践 需求工程读后感
查看>>
[转]SHSH, APTicket以及iOS降級
查看>>
收藏一个有效的求组合数的模板
查看>>
CodeForces - 608B
查看>>
18-面向对象之语法(3)
查看>>
shell多线程之进程间通信(2)
查看>>
eclipse安装CheckStyle,SpotBugs,findSecuritybugs插件
查看>>
iOS开发中地图开发的简单应用
查看>>
@noi.ac - 508@ 01背包
查看>>
String to Date 多种格式转换
查看>>
求最长连续字串
查看>>