在Java中以递归方式查找二进制树中的最小值

时间:2017-02-12 21:04:22

标签: java recursion tree

我需要在递归不是二进制搜索树的字符串树中找到最小值。我试着看看像我这样的其他一些问题,但我无法找到答案。

我已经发现我必须找到每个子树的最小值,然后将它与根进行比较,并返回最小值。但我不确定如何写这个。

这是标题:

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语句。有人可以帮我理解返回声明应该包含哪些内容以及为什么?如果我做得对吗?感谢

1 个答案:

答案 0 :(得分:1)

您需要处理getLeftgetRight也为空,否则您的代码会结束异常。

然后,如果你想要“最低限度”,你不应该输入任何大于比较的情况,我不这么认为。

谁说你不能归零?

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;
}
相关问题