2014-10-12 90 views
0

我有2個類,BSTSet和BSTNode,每個類都有一個minDepth方法。目前,我的方法是返回錯誤的號碼..查找二叉搜索樹的最小深度

BSTSet

public int minDepth() { 
    if(root == null) return -1; 
    else return root.minDepth(); 
} 

BSTNode

public int minDepth() { 
    if(left == null && right == null) return 0; 
    if(left != null && right == null) {return left.height()+ 1; } 
    else if(right != null && left == null){return right.height()+ 1;} 
    else{return Math.min(right.height(), left.height()) + 1;} 
} 

我不明白爲什麼,我咬了清晰的將是巨大的感謝!如果您還需要代碼,請詢問。

回答

0

在這一行

else{return Math.min(right.height(), left.height()) + 1;} 

,你應該在正確的調用minDepth()和左節點,而不是高度()。

+0

* facepalm *感謝隊友 – M0rty 2014-10-12 09:24:10

+0

不知道高度和最小深度有什麼區別,但它也可能適用於此前的兩行。 – nmore 2014-10-12 09:26:58