[英]Count number of occurence of a node in a trie data structure
我有一個特里 ,每個節點都是這樣的對象TrieNode
:
public char content;
public double count;
public LinkedList<TrieNode> childList;
我不得不數出特里里特定字符的出現。 我想總結一下我正在尋找的具有content = char
的節點的count
字段。
這就是我所做的:
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;
}
但是結果被高估了,返回的事件比實際發生的更多。 為什么?
您要多次添加到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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.