我需要在递归不是二进制搜索树的字符串树中找到最小值。我试着看看像我这样的其他一些问题,但我无法找到答案。
我已经发现我必须找到每个子树的最小值,然后将它与根进行比较,并返回最小值。但我不确定如何写这个。
这是标题:
public static Object min(TreeNode t){
}
编辑: 所以我到目前为止所知道的是这个
public static Object min(TreeNode t){
if(t == null){
return ______;
}
else if(min(t.getLeft().compareTo(min(t.getRight()) < 0){
if(min(t.getLeft()).compareTo(t) < 0){
return min(t.getLeft());
}
}
else if(min(t.getLeft().compareTo(min(t.getRight()) > 0){
if(min(t.getRight()).compareTo(t) < 0){
return min(t.geRight());
}
}
else{
return t;
}
}
我认为我正朝着正确的方向前进,但我不确定在null基础案例中什么适合return语句。有人可以帮我理解返回声明应该包含哪些内容以及为什么?如果我做得对吗?感谢
答案 0 :(得分:1)
您需要处理getLeft
或getRight
也为空,否则您的代码会结束异常。
然后,如果你想要“最低限度”,你不应该输入任何大于比较的情况,我不这么认为。
谁说你不能归零?
public static Object min(TreeNode t){
TreeNode min = t;
if(t == null){
return min;
}
final TreeNode left = t.getLeft();
final TreeNode right = t.getRight();
if (left == null && right == null)
return min;
if(left != null && left.compareTo(t) <= 0) {
min = (TreeNode) min(left);
if(min != null && right != null && right.compareTo(t) > 0){ // not sure about this
min = (TreeNode) min(right);
}
return min;
}