2016-03-14 12 views
0

我有一個線索,其中每個節點是一個對象TrieNode這樣的:高度特里結構的(水平的數量)

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

我不得不計數線索的高度(根有電平= 0 )。

所以這是我做了什麼:

int levels = getLevels(getRoot()); 
System.out.println("levels: " + levels); 

public int getLevels(TrieNode node) { 
    int lev = 0; 
    if(node != null) { 
     TrieNode current = node; 
     for(TrieNode child : node.childList) { 
      lev += getLevels(child); 
     }  
    } 
    return lev; 
} 

但它始終爲0。爲什麼返回? 謝謝

回答

0

你需要加入1,當你下降到孩子,否則沒有給lev一個非零值。

請注意,您不計算the height of the trie在此代碼中,您正在計算路徑的長度。你需要找到最大路徑長度:

int lev = 1; 
for (TrieNode child : node.childList) { 
    lev = Math.max(lev, 1 + getLevels(child)); 
} 
+0

謝謝你,你很快。 – ComeDown