SashkoKlincharov

[Java][АПС] - Проверка на валидност

Feb 6th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. class BTree<E> {
  5.  
  6. public BNode<E> root;
  7.  
  8. public BTree() {
  9. root = null;
  10. }
  11.  
  12. public BTree(E info) {
  13. root = new BNode<E>(info);
  14. }
  15.  
  16. public void makeRoot(E elem) {
  17. root = new BNode(elem);
  18. }
  19.  
  20. public void makeRootNode(BNode<E> node) {
  21. root = node;
  22. }
  23.  
  24. public BNode<E> addChild(BNode<E> node, int where, E elem) {
  25.  
  26. BNode<E> tmp = new BNode<E>(elem);
  27.  
  28. if (where == BNode.LEFT) {
  29. if (node.left != null) // veke postoi element
  30. return null;
  31. node.left = tmp;
  32. } else {
  33. if (node.right != null) // veke postoi element
  34. return null;
  35. node.right = tmp;
  36. }
  37.  
  38. return tmp;
  39. }
  40.  
  41. public BNode<E> addChildNode(BNode<E> node, int where, BNode<E> tmp) {
  42.  
  43. if (where == BNode.LEFT) {
  44. if (node.left != null) // veke postoi element
  45. return null;
  46. node.left = tmp;
  47. } else {
  48. if (node.right != null) // veke postoi element
  49. return null;
  50. node.right = tmp;
  51. }
  52.  
  53. return tmp;
  54. }
  55. public boolean check(BNode<Integer> node,boolean flag) {
  56. if(node.left!=null&&node.right!=null) {
  57. if(node.info>=node.left.info&&node.info>=node.right.info) {
  58. flag = true;
  59. }
  60. else {
  61. return false;
  62. }
  63. flag = check(node.left,flag)&&check(node.right,flag);
  64. }
  65. else if(node.left!=null) {
  66. if(node.info>=node.left.info) {
  67. flag = true;
  68. }
  69. else {
  70. return false;
  71. }
  72. flag = check(node.left, flag);
  73. }
  74. else if(node.right!=null) {
  75. if(node.info>=node.right.info) {
  76. flag = true;
  77. }
  78. else {
  79. return false;
  80. }
  81. flag = check(node.right,flag);
  82. }
  83. else {
  84. return true;
  85. }
  86.  
  87. return flag;
  88. }
  89.  
  90. }
  91.  
  92. class BNode<E> {
  93.  
  94. public E info;
  95. public BNode<E> left;
  96. public BNode<E> right;
  97.  
  98. static int LEFT = 1;
  99. static int RIGHT = 2;
  100.  
  101. public BNode(E info) {
  102. this.info = info;
  103. left = null;
  104. right = null;
  105. }
  106.  
  107. public BNode() {
  108. this.info = null;
  109. left = null;
  110. right = null;
  111. }
  112.  
  113. public BNode(E info, BNode<E> left, BNode<E> right) {
  114. this.info = info;
  115. this.left = left;
  116. this.right = right;
  117. }
  118.  
  119.  
  120.  
  121. }
  122.  
  123. public class ValidityCheck {
  124.  
  125. public static void main(String[] args) throws IOException {
  126. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  127. int n = Integer.parseInt(br.readLine());
  128. StringTokenizer st;
  129.  
  130. BNode<Integer> [] nodes = new BNode[n];
  131. for(int i=0;i<n;i++)
  132. nodes[i] = new BNode<Integer>();
  133.  
  134. BTree<Integer> tree = new BTree<Integer>();
  135. for(int i=0;i<n;i++) {
  136. String line = br.readLine();
  137. st = new StringTokenizer(line);
  138. int index = Integer.parseInt(st.nextToken());
  139. nodes[index].info = Integer.parseInt(st.nextToken());
  140. String action = st.nextToken();
  141. if(action.equals("RIGHT")) {
  142. tree.addChildNode(nodes[Integer.parseInt(st.nextToken())], BNode.RIGHT, nodes[index]);
  143. }
  144. else if(action.equals("LEFT")) {
  145. tree.addChildNode(nodes[Integer.parseInt(st.nextToken())], BNode.LEFT, nodes[index]);
  146. }
  147. else {
  148. tree.makeRootNode(nodes[index]);
  149. }
  150. }
  151. System.out.println(tree.check(tree.root,false));
  152. }
  153.  
  154. }
Add Comment
Please, Sign In to add comment