簡體   English   中英

計算一個trie數據結構中節點的出現次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM