什么以return为空堆的最小元素

What to return as the minimum element of an empty heap

我写了这个简单的代码来检查二进制堆是否为空。我对 return 有疑问。不能是:nullvoid 或什么都不是;它应该 return something int,但我不知道是什么。那么,如果我想让这段代码保持简单,我应该放在那里什么? (我的意思是不使用 Integer class 或 java.lang.Integer)。

public int getMinimum() {    
  if (isEmpty()) {
    System.out.println("Heap is empty"); 
    return;           
  } else
    return data[0];
}

无效值抛出异常并在调用时处理

public int getMinimum() throws Exception {
  if (isEmpty())
      throw new Exception("Heap is Empty");
  else
      return data[0];
}

当获得最小值时

 try{
    int i = getMinimum();
    System.out.println("Minimum is :" + i);
 }catch(Exception e){
    System.out.println(e.getMessage());
 }

我只能帮助消除... java 不是魔术。如果您将函数声明为 return 一个 "int",那么编译器将使您成为 return 一个 int。 这留下了有限的选择:

1) 抛出异常,并教您的用户将其与 'isEmpty()' 结合使用,例如: 如果(theHeap.isEmpty()) System.out.println("empty"); 否则 System.out.println(theHeap.getMinimum())

2) 使用您不喜欢的整数(我猜是出于性能原因?)

3) 找到一些不太可能出现在数据中的 int 值,例如也许你不希望你的堆永远持有 Integer.MIN_VALUE.
如果您的堆包含双打,我建议使用 NaN。

这就是 java 语法中可用的所有内容,抱歉,这不是地面制动...

int 是原始类型,因此需要有一个值。 如果真的要这样解决,需要指定一个永远不会出现在堆中的某个int值。您也可以尝试在堆为空时抛出异常。

我们可以简单地声明它是“Integer”而不是“int",所以我们也可以 return "null"。

public Integer getMinimum(){    
  if(isEmpty())
    return null;           
  else
    return data[0];
}