Guest User

Untitled

a guest
Feb 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. import java.util.Random;
  2. import java.util.Set;
  3. import java.util.Stack;
  4.  
  5. public class Main {
  6.  
  7. public static void main(String[] args) {
  8. int RUNS = 100;
  9.  
  10. long starttime, endtime;
  11. int sum = 0;
  12. double runningTime = 0;
  13.  
  14. Tree<Integer> t = generateTree(7, 5, new Random());
  15.  
  16. /* recursiveSum */
  17. for (int i = 0; i < RUNS; i++) {
  18. starttime = System.nanoTime();
  19. sum = recursiveSum(t);
  20. endtime = System.nanoTime();
  21. runningTime += (endtime - starttime);
  22. }
  23.  
  24. System.out.println("recursiveSum = " + sum
  25. + ", avg. run time: " + runningTime / RUNS + " ns");
  26.  
  27. /* iterativeSum */
  28. runningTime = 0;
  29. for (int i = 0; i < RUNS; i++) {
  30. starttime = System.nanoTime();
  31. sum = iterativeSum(t);
  32. endtime = System.nanoTime();
  33. runningTime += (endtime - starttime);
  34. }
  35.  
  36. System.out.println("iterativeSum = " + sum
  37. + ", avg. run time: " + runningTime / RUNS + " ns");
  38.  
  39. }
  40.  
  41. private static int recursiveSum(Tree<Integer> t) {
  42. if (t == null)
  43. return 0;
  44.  
  45. int sum = t.elem();
  46. Set<Tree<Integer>> subtrees = t.subtrees();
  47.  
  48. for (Tree<Integer> subtree : subtrees) {
  49. sum += recursiveSum(subtree);
  50. }
  51.  
  52. return sum;
  53. }
  54.  
  55. private static int iterativeSum(Tree<Integer> t) {
  56. if (t == null)
  57. return 0;
  58.  
  59. int sum = 0;
  60.  
  61. Stack<Tree<Integer>> s = new Stack<Tree<Integer>>();
  62. s.push(t);
  63.  
  64. Tree<Integer> tr;
  65. Set<Tree<Integer>> subtrees;
  66. while (!s.isEmpty()) {
  67. tr = s.pop();
  68. sum += tr.elem();
  69.  
  70. subtrees = tr.subtrees();
  71. for (Tree<Integer> subtree : subtrees) {
  72. s.push(subtree);
  73. }
  74. }
  75.  
  76. return sum;
  77. }
  78.  
  79. /**
  80. * @param h - height of tree
  81. * @param bf - branching factor
  82. * @param rand - random generator for generating elements
  83. */
  84. private static Tree<Integer> generateTree(int h, int bf, Random rand) {
  85. Tree<Integer> t = new Tree<Integer>(rand.nextInt(10));
  86.  
  87. for (int i = 0; i < bf & h > 0; i++) {
  88. t.addSubtree(generateTree(h-1, bf, rand));
  89. }
  90.  
  91. return t;
  92.  
  93. }
  94.  
  95. }
Add Comment
Please, Sign In to add comment