这不是二叉搜索树,也不遵循任何严格的规则。
唯一的规则是每个节点都是一个正整数,并且每个节点可以没有子节点,一个左子节点或两个子节点。 (不只是一个正确的孩子)。
我希望使用递归遍历整个树,并返回完成后找到的最小值。
如果您没有修改方法的签名或使用除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;
}
答案 0 :(得分:2)
也许问题是,对于不存在的孩子,你返回-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;
}