2017-05-07 70 views
1

今天我試圖循環打印語句,以便每次輸出不同的結果。前提是我有一個二叉搜索樹,已經填充了0-99的隨機數。在java中循環顯示不同的結果

然後我選擇一個隨機節點,並獲得從根到這個隨機節點的長度。

我需要重複上述句子很多次,但到目前爲止我所有的循環都給出了相同的答案或無限循環。

while(i!=10){ 
    System.out.println(bst.Pathlength(root, random_node)); 
    i++; 
} 

for (int i = 0;i< 10; i++){ 
    System.out.println(bst.Pathlength(root, random_node)); 
} 

while (true) { 
    int i = 0; 
    int j = 1000; 
    if (i != j) { 
     System.out.println(bst.Pathlength(root, random_node)); 
     i++; 
    }else if (i == j){ 
     break; 
    } 
} 

以上是循環的選擇我一直在努力(而不是在同一時間)。 Pastebin link with full program包括整個圖片的完整程序。

在這個任何指針將是巨大的:)

回答

2

目前,你在相同例如通過在循環的每次迭代因此爲什麼它會在每次打印相同的結果你」我們已經提到過,相反,你需要從當前節點遍歷樹中的所有節點,然後離開(如果有的話),然後右(如果有的話)...等等。

您可能想要創建一個inOrder方法,該方法沿着樹遍歷以打印子樹的數據。

至於你循環,前兩個應該按預期工作,不過,最後循環將總是無限循環,因爲你重置i0在循環的每次迭代中,這意味着它將永遠達到j爲了打破循環。解決方法是簡單地在循環外部聲明ij變量。

不同類型的Tree Traversals

+0

感謝您的答案,但我最終解決了我自己的問題。我只需要在循環中移動隨機節點選擇器的東西。 – JimmyPop13

+0

@ JimmyPop13很高興你已經解決了你自己的問題,但通常在一棵樹內,有很多常見的方法遍歷樹,我已經附加了一個鏈接。遵循已有的常用算法是一種很好的做法。 –