我想計算二叉搜索樹的一個關鍵的深度和我得到一個堆棧溢出錯誤,我不知道爲什麼。這是我目前的代碼。堆棧溢出二叉搜索樹計算深度
private int calcDepth(Tree<K, V> x, K keyIn, int currentLevel){
//BASE CASE
if (this.key.compareTo(keyIn) == 0) return currentLevel;
if (this.key.compareTo(keyIn) < 0){
return calcDepth(this.left, keyIn, currentLevel+1);
}
if (this.key.compareTo(keyIn) > 0){
return calcDepth(this.right, keyIn, currentLevel + 1);
}
return -1;
}
,這是我的算法
//ALGORITHIM
//1. if the current key is equal to the parameter key
// return the currentLevel
//2. if the current key is less than the parameter key
// go left and increment the level
//3. if the current key is greater than the paramete key
// go right and increment the level
//4. if none of these cases are met (key is not in tree
// return -1
我是新來的Java所以原諒問題的初級水平
你是否意識到你沒有使用參數「x」? –
你可以展示你的比較器嗎? – stinepike
如果給定密鑰不存在,算法將無法返回-1 –