java - 设置递归调用次数限制 - Java

标签 java recursion red-black-tree

我有一个红黑树类。

我想按顺序打印它(因此数字将从最小到最大打印)。

打印方法如下:

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/

相关文章:

java.lang.OutOfMemory错误: GC overhead limit exceeded facing this error while executing android project

Java ASN.1 编译器

java - 如何从我的 Java 应用程序将一些 java 文件编译到 bin 目录中?

algorithm - 确定树遍历是广度优先、深度优先还是两者都不是

algorithm - 高度为h的红黑树的最小节点数计算公式是什么?

java - 红黑树结构?

java - 如何将消息直接绑定(bind)到我的对象类

javascript - 有人可以解释 return 语句如何与 javascript 中的递归一起使用吗?

java 获取所有可能的变体(正和负)

algorithm - 在线性时间内从排序数组构建红黑树