Pagini recente » Cod sursa (job #1887586) | Cod sursa (job #1883996) | Cod sursa (job #2711899) | Cod sursa (job #2700231) | Cod sursa (job #1945772)
#include <iostream>
#include <cstdio>
using namespace std;
struct trieNode
{
int ap, nrCopii;
trieNode*copii[26];
trieNode()
{
ap=0;
nrCopii=0;
for(int i=0; i<26; ++i)
copii[i]=NULL;
}
}*root;
void insertTrieNode(trieNode*&root, char *p)
{
if(!*p)
{
root->ap++;
return;
}
if(root->copii[*p-'a'])
{
insertTrieNode(root->copii[*p-'a'], p+1);
return;
}
root->copii[*p-'a']=new trieNode;
insertTrieNode(root->copii[*p-'a'], p+1);
}
void stergeTrieNode()
{
}
void afiseazaNrAparitii(trieNode*&root, char *p)
{
if(!*p)
{
printf("%d\n", root->ap);
return;
}
afiseazaNrAparitii(root->copii[*p-'a'], p+1);
}
void afiseazaLungPrefixMaxim()
{
}
void read()
{
int operatie;
char str[26];
root=new trieNode;
while(scanf("%d %s", &operatie, &str)==2)
{
char *p=str;
if(operatie==0)
insertTrieNode(root, p);
else if(operatie==1)
stergeTrieNode();
else if(operatie==2)
afiseazaNrAparitii(root, p);
else
afiseazaLungPrefixMaxim();
}
}
int main()
{
freopen("trie.in", "r", stdin);
freopen("trie.out", "w", stdout);
read();
return 0;
}