Advertisement
Guest User

Untitled

a guest
May 25th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. //Mateusz Marchewka - 2
  2. import java.util.Scanner;
  3.  
  4. public class Source
  5. {
  6. static int g=0;
  7. static int[] w;
  8. public static Scanner inScan = new Scanner(System.in);
  9.  
  10. public static void post(int[] a, int[] k, int la, int pa, int lk, int pk)
  11. {
  12. if(pa == la)
  13. {
  14. w[g] = a[la];
  15. g++;
  16. return;
  17. }
  18. if(pa-la == 1)
  19. {
  20. if(a[la] == k[lk])
  21. {
  22. w[g]= k[pk];
  23. g++;
  24. w[g] = k[lk];
  25. g++;
  26. } else
  27. {
  28. w[g]= k[lk];
  29. g++;
  30. w[g] = k[pk];
  31. g++;
  32. }
  33. return;
  34. }
  35. if(la > pa) return;
  36. int p = 0;
  37. for(int i=lk;i<=pk;i++)
  38. if(a[pa] != k[i]) p++;
  39. else break;
  40. w[g] = a[pa];
  41. g++;
  42. post(a,k,la,la+p-1,lk,lk+p-1);
  43. post(a,k,la+p,pa-1,lk+p+1,pk);
  44. }
  45.  
  46. public static void pre(int[] a, int[] k, int la, int pa, int lk, int pk)
  47. {
  48. if(pa == la)
  49. {
  50. w[g] = a[la];
  51. g++;
  52. return;
  53. }
  54. if(pa-la == 1)
  55. {
  56. if(a[la] == k[lk])
  57. {
  58. w[g]= k[pk];
  59. g++;
  60. w[g] = k[lk];
  61. g++;
  62. } else
  63. {
  64. w[g]= k[lk];
  65. g++;
  66. w[g] = k[pk];
  67. g++;
  68. }
  69. return;
  70. }
  71. if(la > pa) return;
  72. int p = 0;
  73. for(int i=lk;i<=pk;i++)
  74. if(a[la] != k[i]) p++;
  75. else break;
  76. pre(a,k,la+1,la+p,lk,lk+p-1);
  77. pre(a,k,la+p+1,pa,lk+p+1,pk);
  78. w[g] = a[la];
  79. g++;
  80. }
  81.  
  82. public static void main( String [] args )
  83. {
  84. int z = inScan.nextInt();
  85. for(int i=0;i<z;i++)
  86. {
  87. int n = inScan.nextInt();
  88. String nazwa = inScan.next();
  89. int[] a = new int[n];
  90. for(int j=0;j<n;j++)
  91. a[j] = inScan.nextInt();
  92. String m = inScan.next();
  93. int[] k = new int[n];
  94. w = new int[n];
  95. for(int j=0;j<n;j++)
  96. {
  97. k[j] = inScan.nextInt();
  98. w[j] = 0;
  99. }
  100. g=0;
  101. if(nazwa.equals("PREORDER")) pre(a,k,0,n-1,0,n-1);
  102. else post(a,k,0,n-1,0,n-1);
  103. for(int j=0;j<n;j++)
  104. System.out.print(w[j] + " ");
  105. System.out.println();
  106. }
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement