我有一个红黑树类。
我想按顺序打印它(因此数字将从最小到最大打印)。
打印方法如下:
public void printTreeInOrder(Node node){
//in-order printing (sorted)
if (!(isNull(node))){
printTreeInOrder((node.getLeft()));
System.out.println(node.getValue());
printTreeInOrder(node.getRight());
}
}
但是我只想打印 k 个最小的数字。如果我可以限制递归调用的次数,比如持有一个哨兵并计算该方法被调用的次数,那就很容易了。
但是如何在递归函数中实现呢?
我想过创建一个全局变量 k 并在函数中对它进行计数,但这听起来不对,而且 k 本身就是一个变量,它不是常数。 有没有办法可以计算递归函数中打印的数字数量?
谢谢
艾伦
最佳答案
该方法返回剩余要打印的元素数,并接受可以从此节点打印的最大元素数。
public int printTreeInOrder(Node node, int k){
//in-order printing (sorted)
if (k>0 && !(isNull(node))){
k = printTreeInOrder(node.getLeft(),k);
if (k>0) {
System.out.println(node.getValue());
k--;
}
return printTreeInOrder(node.getRight(),k);
}
return k;
}
关于java - 设置递归调用次数限制 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599420/