2017-05-07 125 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很高兴你已经解决了你自己的问题,但通常在一棵树内,有很多常见的方法遍历树,我已经附加了一个链接。遵循已有的常用算法是一种很好的做法。 –

相关问题