1
我有一个红黑树。设置递归调用数限制 - Java
我想打印它的顺序(所以数字将从最小到最大打印)。
这里的印刷方法:
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是一个变量本身,它不是恒定的。 我有一种方法可以计算在递归函数中打印的数字数量吗?
谢谢,
艾伦
我知道这并不回答这个问题......但在实践中这种递归的迭代版本往往会表现得更好,并像早期停止的一些东西是稍微向前伸直(亦即。'''如果(--k == 0)return;''')。对于这种遍历,你需要一个'''Stack>'''其中Action是一个'''enum Action {GO_LEFT,PRINT,GO_RIGHT}''' –
似乎一方面你想限制遍历的深度,同时你想要底部K数....你是否真的想要说要限制要打印的数字的数量(K)?如果希望始终获得最小的数字,则无法限制遍历的深度。请纠正你的问题 –
@ValentinRuano我其实不知道你的意思。我只想打印树中n个数字中的k个数字,然后按顺序排序。我看不出矛盾。 – Alan