欢迎! 我有一个名为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