在执行DFS时尝试中的原始值(int)

时间:2018-01-26 16:07:29

标签: java trie

我试图在Trie中计算prefixCount的值,如下所示。

我很困惑为什么count的值不会返回为3

以防万一,Tries包含[by,bye,byer,rat]。为什么count为0,而不是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);
        }
    }
}

我在做DFS操作时做错了什么。

谢谢!

1 个答案:

答案 0 :(得分:0)

我没有正确定义我的方法。适当的方法如下。

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;
}

谢谢!