How do i code up a trie implemention with 4 children as an a

How do i code up a trie implemention with 4 children as an array and at the same time store a key and value in each children ? Java

Solution

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <stdbool.h>

#define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])

#define ALPHABET_SIZE (26)

#define CHAR_TO_INDEX(c) ((int)c - (int)\'a\')

struct TrieNode

{

    struct TrieNode *children[ALPHABET_SIZE];

    bool isLeaf;

};

struct TrieNode *getNode(void)

{

    struct TrieNode *pNode = NULL;

    pNode = (struct TrieNode *)malloc(sizeof(struct TrieNode));

    if (pNode)

    {

        int i;

        pNode->isLeaf = false;

        for (i = 0; i < ALPHABET_SIZE; i++)

            pNode->children[i] = NULL;

    }

    return pNode;

}

void insert(struct TrieNode *root, const char *key)

{

    int level;

    int length = strlen(key);

    int index;

    struct TrieNode *pCrawl = root;

    for (level = 0; level < length; level++)

    {

        index = CHAR_TO_INDEX(key[level]);

        if (!pCrawl->children[index])

            pCrawl->children[index] = getNode();

        pCrawl = pCrawl->children[index];

    }

        pCrawl->isLeaf = true;

}

bool search(struct TrieNode *root, const char *key)

{

    int level;

    int length = strlen(key);

    int index;

    struct TrieNode *pCrawl = root;

    for (level = 0; level < length; level++)

    {

        index = CHAR_TO_INDEX(key[level]);

        if (!pCrawl->children[index])

            return false;

        pCrawl = pCrawl->children[index];

    }

    return (pCrawl != NULL && pCrawl->isLeaf);

}

int main()

{

    // Input keys (use only \'a\' through \'z\' and lower case)

    char keys[][8] = {\"the\", \"a\", \"there\", \"answer\", \"any\",

                     \"by\", \"bye\", \"their\"};

    char output[][32] = {\"Not present in trie\", \"Present in trie\"};

    struct TrieNode *root = getNode();

    

    int i;

    for (i = 0; i < ARRAY_SIZE(keys); i++)

        insert(root, keys[i]);

    printf(\"%s --- %s\ \", \"the\", output[search(root, \"the\")] );

    printf(\"%s --- %s\ \", \"these\", output[search(root, \"these\")] );

    printf(\"%s --- %s\ \", \"their\", output[search(root, \"their\")] );

    printf(\"%s --- %s\ \", \"thaw\", output[search(root, \"thaw\")] );

    return 0;

}

How do i code up a trie implemention with 4 children as an array and at the same time store a key and value in each children ? JavaSolution#include <stdio.h&
How do i code up a trie implemention with 4 children as an array and at the same time store a key and value in each children ? JavaSolution#include <stdio.h&
How do i code up a trie implemention with 4 children as an array and at the same time store a key and value in each children ? JavaSolution#include <stdio.h&

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site