java - 进行 DFS 时尝试中的原始值 (int)

标签 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 操作时做错了什么吗?

谢谢!

最佳答案

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

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

谢谢!

关于java - 进行 DFS 时尝试中的原始值 (int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465112/

相关文章:

java - 在更改下拉值时更改禁用选项卡的类别

java - JFrame 窗口不显示任何内容,除非调整大小

Java:使前缀树记住最后一个不为空的值

c++ - 基数树 (Patricia Trie) 是一种高效的手机通讯录数据结构吗

java - 优化java程序中trie结构的空间使用

c# - 如何公开 Amazon EC2 实例的进程状态

Java ProcessBuilder 传递参数

java - ArrayList Java 加法

f# - F# 中的不可变 Trie 结构

c - 如何以最快的方式读取单个 ascii 字符形式的 unicode 字符串并检测它实际上是 unicode?