【问题标题】:Recursively finding the minimum value in a Binary Tree in Java在Java中递归查找二叉树中的最小值
【发布时间】:2017-02-12 21:04:22
【问题描述】:

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

我发现我必须找到每个子树的最小值,然后将其与根进行比较,并返回最小值。但我不知道该怎么写。

这是标题:

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 语句。有人可以帮助我了解退货声明中应该包含什么内容以及为什么?如果我做对了?谢谢

【问题讨论】:

  • 欢迎来到 Stack Overflow!我们是一个问答网站,而不是一个雇佣编码员的服务。请解释到目前为止您已经尝试过什么以及为什么它没有奏效。见:Why is "Can someone help me?" not an actual question?
  • @JoeC 同意。但是,在这种情况下,您应该投票关闭。
  • @GabrielOshiro 正确,但在这种情况下您应该投票结束。
  • @nhouser9 我很想这样做,但我还没有足够的声誉来这样做。
  • @GabrielOshiro 谢谢你的建议,我做得更好了吗?

标签: java recursion tree


【解决方案1】:

您需要处理 getLeftgetRight 也为 null,否则您的代码最终会出现异常。

然后,如果您想要“最小值”,则不应输入大于比较的情况,我不认为。

谁说不能返回 null?

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;
}

【讨论】:

  • 是的,未经测试;) 随意使用旁边的复选标记接受答案。另外,欢迎您使用修复程序编辑我的答案
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
相关资源
最近更新 更多