设置递归调用次数限制 - 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;
}