统计特里数据结构中节点的出现次数

时间:2016-03-08 21:05:03

标签: java trie

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

public char content; 
public double count;
public LinkedList<TrieNode> childList; 

我必须计算trie中特定字符的出现次数。 我想总结count我正在寻找content = char的节点字段。

所以这就是我所做的:

int occ = occurrencesOfChar(0, root, c);

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

但是结果被高估了,比实际发生的更多。 为什么呢?

1 个答案:

答案 0 :(得分:3)

您已多次添加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;
}