设置递归调用次数限制 - Java
Set limit to the number of recursive calls - Java
我有一个class的红黑树。
我想按顺序打印(这样数字就会从小到大打印)。
打印方法如下:
public void printTreeInOrder(Node node){
//in-order printing (sorted)
if (!(isNull(node))){
printTreeInOrder((node.getLeft()));
System.out.println(node.getValue());
printTreeInOrder(node.getRight());
}
}
但是我只想打印 k 个最小的数字。如果我能限制递归调用的次数就好了,比如拿着一个sentinal,统计方法被调用的次数。
但是如何在递归函数中实现它?
我想做一个全局变量k然后在函数里算,但是听起来不对,而且k本身就是一个变量,它不是常数。
我有办法计算递归函数中打印的数字数量吗?
谢谢,
艾伦
方法returns剩余要打印的元素数,并接受可以从此节点打印的最大元素数。
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;
}
我有一个class的红黑树。
我想按顺序打印(这样数字就会从小到大打印)。
打印方法如下:
public void printTreeInOrder(Node node){
//in-order printing (sorted)
if (!(isNull(node))){
printTreeInOrder((node.getLeft()));
System.out.println(node.getValue());
printTreeInOrder(node.getRight());
}
}
但是我只想打印 k 个最小的数字。如果我能限制递归调用的次数就好了,比如拿着一个sentinal,统计方法被调用的次数。
但是如何在递归函数中实现它?
我想做一个全局变量k然后在函数里算,但是听起来不对,而且k本身就是一个变量,它不是常数。 我有办法计算递归函数中打印的数字数量吗?
谢谢,
艾伦
方法returns剩余要打印的元素数,并接受可以从此节点打印的最大元素数。
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;
}