Java搜索整个树的最小值
问题描述:
这不是一个二叉搜索树,也没有遵循任何严格的规则。Java搜索整个树的最小值
唯一的规则是每个节点是一个正整数,并且每个节点可以没有子节点,一个左子节点或两个子节点。 (不只是一个正确的孩子)。
我想穿过整个树使用递归,并返回我发现完成后的最小值。
我会很感激,如果你没有修改方法的签名或分开使用任何额外的方法从Math.min()
public static int minValue(MyNode n) {
int root, left, right;
int min = -1;
if (n.obj != null) {
root = (int) n.obj;
left = minValue(n.left);
right = minValue(n.right);
if (left < right)
min = left;
else
min = right;
if (root < min)
min = root;
}
return min;
}
答
也许问题是根本不存在的孩子,你回来-1,但后来你不会指望这种可能性。您需要从分析中删除-1:
public static int minValue(MyNode n) {
int root, left, right;
int min = -1;
if (n != null) {
root = (int) n.obj;
left = minValue(n.left);
right = minValue(n.right);
if (left > -1){
if(right > -1){
min = Math.min(left, right);
min = Math.min(root, min);
}
else{
min = Math.min(left, root);
}
}
else{
min = root;
}
}
return min;
}
这是什么问题? – 2013-03-17 23:15:48
你的问题是什么? – meriton 2013-03-17 23:15:51
我不知道我的方法有什么问题,任何人都可以看到它出错的地方吗? – Ciphor 2013-03-17 23:17:05