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