歡迎! 我有一個名爲less的遞歸公共靜態方法,它需要一個樹節點(原始二叉樹,不是真正的搜索樹)和一個int參數,如果樹中的所有值都小於整數,則返回該參數。所以,我會用一個public class TN { public int value; public TN left, right; public TN(int v, TN l, TN r) {value = v; left = l; right = r;} }
所以,我的方法是這樣的:Java遞歸二叉樹
public static boolean less(TN s, int toFind){
if (s == null)
return true;
else{
if(s.value <= toFind)
return less(s.left, toFind) && less(s.right, toFind); // right here do I return true? or do I have to somehow recall recursively
else
return false;
}
我在想,如果這是正確的還是我失去了一些東西???我必須返回真假嗎?
因此,對於else語句,我可以只返回調用方法而不是返回錯誤的權利? – Roxy 2009-10-16 19:21:11
那麼,你需要有一個相對的全局變量,你在分支之前檢查。例如。 「if(found == true)return false;」,然後將else改爲「else {found = true; return false}」。這樣,如果找到的數字大於要查找的數字,則會將其設置爲true。然後每隔一個分支也會返回。您只需確保每次調用該函數都可以看到相同的「找到」。 – CookieOfFortune 2009-10-16 19:59:04