Java 计算trie数据结构中节点的出现次数

Java 计算trie数据结构中节点的出现次数,java,trie,Java,Trie,我有一个trie,其中每个节点都是一个对象triode,如下所示: public char content; public double count; public LinkedList<TrieNode> childList; 但结果被高估了,返回的事件比实际发生的要多。 为什么?您多次添加到occ,因为您将其作为参数传递。 应使用局部变量: public int occurrencesOfChar(TrieNode node, char c) { int occ =

我有一个trie,其中每个节点都是一个对象
triode
,如下所示:

public char content; 
public double count;
public LinkedList<TrieNode> childList; 
但结果被高估了,返回的事件比实际发生的要多。
为什么?

您多次添加到
occ
,因为您将其作为参数传递。 应使用局部变量:

public int occurrencesOfChar(TrieNode node, char c) {
    int occ = 0;
    for(TrieNode child : node.childList) {
        if(child.content == c) { 
            occ += child.count; 
        }
        occ += occurrencesOfChar(child, c);
    }
    return occ;
}

@Martin Broadhurst不,因为在
count
字段中,每个节点可以是一个大于1的数字。谢谢Martin Broadhurst!
public int occurrencesOfChar(TrieNode node, char c) {
    int occ = 0;
    for(TrieNode child : node.childList) {
        if(child.content == c) { 
            occ += child.count; 
        }
        occ += occurrencesOfChar(child, c);
    }
    return occ;
}