zoukankan      html  css  js  c++  java
  • 【笔记】字典树

    字典树(Trie树、字母数、前缀树)

    作用

    一般是存储单词(以下操作仅限于小写单词树)

    优点

    共用前缀,省空间,查询快

    Trie树的应用

    (1) 字符串检索
     (2) 字符串最长公共前缀

    支持操作

    询问单词
    插入单词
    删除单词

    操作工具

    一棵树,用ch[u][i]表示u节点的i号儿子(i唯一的确定了一个从a到z的字母)的编号,相当于指针
    一个单词,用于插入或询问是否在树
    bool类型的if_end[u],表示u节点存储的是否为一整个单词

    边和节点

    边存的是字母,节点存的是从根到此节点经过路径所连成的单词
    根节点啥也没有

    插入

    void insert(char *s)
    {
        int len = strlen(s);
        int u = 1;//根
        for(int i=0;i<len;i++)
        {
            int c = s[i]-'a';
            if(ch[u][c]==0)
                ch[u][c]=++tot;//tot节点总数
            u = ch[u][c];
        }
        bo[u] = 1;
    }
    

    查询

    bool find(char *s)
    {
        int u = 1;
        int len = strlen(s);
        for (int i = 0; i < len; i++)
        {
            int c = s[i] - 'a';
            if(!ch[u][c])
                return 0;
            u = ch[u][c];
        }
        return true;
    }
    ####删除
    ···
    ##做题时注意分类讨论
    ###其实Trie不仅可以寸单词,还可应用于异或,称之为01字典树
  • 相关阅读:
    java_list<String> string[]拼接json
    java_method_删除事务回滚
    java_jdk_JDK版本切换批处理脚本
    java_js_检查是否全为数字
    java_method_stringUtils
    java_method_下拉框成json
    java_method_下载导入模版
    java_js_json_日期格式化
    java_js从字符串中截取数字
    gulp+tp5配置
  • 原文地址:https://www.cnblogs.com/ZhengkunJia/p/12246228.html
Copyright © 2011-2022 走看看