Cod sursa(job #3164872)

Utilizator razviii237Uzum Razvan razviii237 Data 4 noiembrie 2023 16:29:01
Problema Trie Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#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;
}