tri树模板

来源:互联网 发布:win8.1改mac地址 编辑:程序博客网 时间:2024/05/23 13:03

字典树模板


#include <iostream>#include <cstdio>using namespace std;const int maxEdge = 30;const int maxNode = 20*400;struct TriNode{    int value;    int next[maxEdge];}triNode[maxNode];int triMaxNodeIndex;TriNode newTriNode(){    TriNode node;    node.value = 0;    for(int edge = 0; edge < maxEdge; edge++){        node.next[edge] = -1;    }    return node;}void initialTri(){    triNode[0] = newTriNode();    triMaxNodeIndex = 1;}void insertTriNode(string triStr){    int len = triStr.length();    int currentNodeIndex = 0;    for(int i = 0; i < len; i++){        int edge = triStr[i]-'a';        if(triNode[currentNodeIndex].next[edge] == -1){            triNode[currentNodeIndex].next[edge] = triMaxNodeIndex;            triNode[triMaxNodeIndex] = newTriNode();            triMaxNodeIndex++;        }        currentNodeIndex = triNode[currentNodeIndex].next[edge];    }    if(len > 0) triNode[currentNodeIndex].value++;}int queryTriNode(string triStr){    int len = triStr.length();    int currentNodeIndex = 0;    for(int i = 0; i < len; i++){        int edge = triStr[i]-'a';        currentNodeIndex = triNode[currentNodeIndex].next[edge];        if(currentNodeIndex == -1) return 0;    }    return triNode[currentNodeIndex].value;}int main(){    return 0;}


0 0
原创粉丝点击