Search code examples
javatrie

Primitive values (int) in Tries while doing DFS


I m trying to calculate the value of prefixCount in Trie, as below.

I am puzzled why the value of count is not returned as 3

Just in case , Tries contains [by,bye, byer, rat]. Why count is return as 0, and not 3.

public int prefixCount(String prefix)
{
    int count = 0;
    TrieNode node = searchPrefix(prefix);
    if(node != null)
    {
        prefixCount(prefix, node, count);
    }
    return count;
}

public void prefixCount(String prefix, TrieNode node, int count)
{
    if(node.isEnd())
    {
        count++;
    }

    for(int index = 0;index < 26;index++)
    {
        char value = (char) (index + 'a');
        TrieNode next = node.get(value);
        if(next != null)
        {
            prefixCount(prefix + value, next, count);
        }
    }
}

Am i doing something wrong while doing DFS operation.

Thanks !


Solution

  • I was not defining my method correctly. The appropriate method would be as below.

    public int prefixCount(String prefix)
    {
        int count = 0;
        TrieNode node = searchPrefix(prefix);
        if(node.isEnd())
        {
            count++;
        }
    
        for(int index = 0;index < 26;index++)
        {
            char value = (char) (index + 'a');
            TrieNode next = node.get(value);
            if(next != null)
            {
                count += prefixCount(prefix + value);
            }
        }
        return count;
    }
    

    Thanks !