zoukankan      html  css  js  c++  java
  • hiho_1014_Trie_Tree

    http://hihocoder.com/problemset/problem/1014

    这个树感觉像是26叉树~ 写起来和普通的二叉树差不多。

    <g++> 编译~

    对比:

    struct BinayNode{
            int data;
            BinaryNode *l,*r;  // 二叉的,有两个子树,可以写成 BinaryNode *son[2];
            BinaryNode (int x=0,BinaryNode *l=NULL, BinaryNode *r=NULL):data(x),l(ll),r(rr) {}   
    }

    和二叉排序树相比,只是在节点上的值data的意义不同罢了~  

    看到维基下面好多种树wa~目前知道的 :

    BST AVL B B+..树,这些是基于数字大小排序的树

    堆算是一种吧。

    trie树是字典树,我觉得和BST差不多,排序的规则是字母,不包含在节点上,而在子树的顺序,即固定26棵树,来一个字母,它放在哪棵子树上是确定的,我感觉比起平衡二叉树要稳定得多,AVL扭来扭去的因为排序是对结点值的排序,而字典树是排好序的。

    字典树就像是我们平时查字典一样~所以说,某些算法反映了更快捷的生活方式~ 好神奇啊~

    const int alpha=26;
    struct TrieNode{
        int cnt;
        TrieNode *next[26];
        TrieNode(){
            cnt=0;
            for(int i=0;i<alpha;++i) next[i]=NULL;
        }
    };
    
    int n;
    string s;
    
    int main()
    {
        TrieNode *dic=new TrieNode;
        dic->cnt=-1;
        TrieNode *cur=NULL;
        cin >> n;
            /* 插入 */
        while(n--){
            cin >> s;
            cur = dic;
            for(int i=0;i<s.size();++i)
            {
                int index=s[i]-'a';
                if(NULL==cur->next[index]) 
                    cur->next[index] = new TrieNode;
                cur->next[index]->cnt++;
                cur=cur->next[index];
            }
    
        }
        cin >> n;
            /* 查找 */
        while(n--){
            cin >> s;
            cur = dic;
            for(int i=0;i<s.size();++i){
                cur=cur->next[s[i]-'a'];
                if(NULL==cur) break;
            }
            if(NULL==cur) cout << "0" << endl;
            else cout << cur->cnt << endl;
        }
    
        return 0;
    }
  • 相关阅读:
    如何在for循环中使用多线程
    解决ios10以上H5页面手势、双击缩放问题
    select标签默认选项
    vue三级联动
    手动安装composer详细教学
    密码校验:长度6位以上,至少包含一个数字,一个大写字母,一个小写字母,不包含空格
    tp5生成6位不重复验证码
    css漂亮的阴影边框
    圆形进度条css3样式
    jQuery倒计时组件(jquery.downCount.js)
  • 原文地址:https://www.cnblogs.com/tinyork/p/4266628.html
Copyright © 2011-2022 走看看