Pagini recente » Cod sursa (job #221962) | Cod sursa (job #1174642) | Cod sursa (job #692106) | Cod sursa (job #1804727) | Cod sursa (job #3164872)
#include <iostream>
#include <climits>
#include <string>
using namespace std;
// neterminat
struct Trie {
int count, childNumber;
Trie *child[26];
Trie() {
count = childNumber = 0;
memset(child, 0, sizeof(child));
}
~Trie() {
for(int i = 0; i < 26; i ++)
if(child[i] != 0)
delete child[i];
}
};
void ins(Trie* node, char *s) {
if(s[0] == '\n') {
node->count ++;
return;
}
if(node->child[s[0] - '0'] == 0) {
Trie* newNode = new Trie;
node->child[s[0] - '0'] = newNode;
node->childNumber ++;
} else {
ins(node->child[s[0] - '0'], s+1);
}
}
int del(Trie* node, char *s, Trie* head) {
if(s[0] == '\n')
node->childNumber --;
else if(del(node->child[s[0]-'0'], s+1, head) == 1) {
delete node->child[s[0]-'0'];
node->childNumber --;
}
if(node->count == 0 && node->childNumber == 0 && node != head) {
return 1;
}
return 0;
}
int que(Trie* node, char* s) {
if(s[0] == '\n')
return node->count;
if(node->child[s[0] - '0'] == 0)
return 0;
else
return que(node->child[s[0] - '0'], s+1);
}
int main()
{
Trie* t = new Trie;
delete t;
return 0;
}