hiho第二周——Trie树

来源:互联网 发布:郑州电力编程招聘 编辑:程序博客网 时间:2024/06/05 20:09

hiho第二周——Trie树

题目链接:http://hihocoder.com/contest/hiho2/problem/1

注意点

结构体的构造函数
建树:注意先给子节点分配好内存,在移动cur指针
查询:注意边界情况,cur可能在循环完成后指向空节点

可执行代码

#include <iostream>#include <fstream>#include <string>using namespace std;typedef struct Node{    //结构体的构造函数    Node()    {        num = 0;        for(int i = 0;i<26;i++)            child[i] = NULL;    }    int num;    struct Node* child[26];}Node;//建树void insert(Node *root,string str){    Node * cur = root;    for(int i = 0;i<str.size();i++)    {        if(cur->child[str[i]-'a'] == NULL)        {            cur->child[str[i]-'a'] = new Node();        }        cur = cur->child[str[i]-'a'];        cur->num = cur->num + 1;    }    return;}int query(Node *root,string str){    Node * cur = root;    for(int i = 0;i < str.size();i++)    {        if(cur == NULL)            return 0;        cur = cur->child[str[i]-'a'];    }    if(cur == NULL)        return 0;    return cur->num;}int main(){    ifstream cin("input.txt");    int N;    string str;    Node *root = new Node();    cin>>N;    while(N--)    {        cin>>str;        insert(root,str);    }    cin>>N;    while(N--)    {        cin>>str;        cout<<query(root,str)<<endl;    }    return 0;}
0 0
原创粉丝点击