Guest User

Untitled

a guest
Oct 23rd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. boolean checkBST(Node root) {
  2.  
  3. boolean leftflag = false;
  4. boolean rightflag = false;
  5.  
  6. Node l = root.left;
  7. Node r = root.right;
  8.  
  9. if(l!=null) {
  10. if(root.data <= l.data) {
  11. leftflag = false;
  12. }
  13. else {
  14. leftflag = true;
  15. checkBST(l);
  16. }
  17. }
  18. if(leftflag == false)
  19. return false;
  20. if(r != null) {
  21. if(root.data >= r.data) {
  22. rightflag = false;
  23. }
  24. else {
  25. rightflag = true;
  26. checkBST(r);
  27. }
  28. }
  29. if(rightflag == false)
  30. return false;
  31.  
  32. return true;
  33. }
  34.  
  35. public boolean isValid(Node root) {
  36. return isValidBST(root, Integer.MIN_VALUE,
  37. Integer.MAX_VALUE);
  38. }
  39.  
  40. private boolean isValidBST(Node node, int MIN, int MAX) {
  41. if(node == null)
  42. return true;
  43. if(node.value > MIN
  44. && node.value < MAX
  45. && isValidBST(node.left, MIN, node.value)
  46. && isValidBST(node.right, node.value, MAX))
  47. return true;
  48. else
  49. return false;
  50. }
  51.  
  52. 7
  53. /
  54. 3 8
  55. /
  56. 4 6 9
  57.  
  58. // The condition here is respected, there is no left node
  59. // But the tree is an actual search tree, you didn't check right node
  60. // Before returning false.
  61. if(leftflag == false)
  62. return false
  63.  
  64. if(l != null)
  65. {
  66. if(root.data<=l.data)
  67. {
  68. return false;
  69. }
  70. else
  71. {
  72. // recursive call here
  73. }
  74. }
  75.  
  76. if(r != null)
  77. {
  78. // Same as left node here
  79. }
  80.  
  81. else {
  82. leftflag = true;
  83. checkBST(l);
  84. }
  85. }
  86. if(leftflag == false)
  87. return false;
  88.  
  89. else
  90. leftflag = checkBST(l)
  91.  
  92. if (flag == false)
  93.  
  94. if (!flag)
  95.  
  96. if (l)
  97.  
  98. boolean leftflag = false;
  99. boolean rightflag = false;
  100.  
  101. if(l) {
  102. if(root.data > l.data) {
  103. leftflag = checkBST(l);
  104. }
  105. }
  106. if(!leftflag)
  107. return false;
  108.  
  109. if(r) {
  110. if(root.data < r.data) {
  111. rightflag = checkBST(r);
  112. }
  113. }
  114. if(rightflag == false)
  115. return false;
  116.  
  117. return true;
  118. }
  119.  
  120. return
  121. (!root.left || // Is left subtree a BST?
  122. (root.data > root.left.data &&
  123. checkBST(root.left)))
  124. &&
  125. (!root.right || // Is right subtree a BST?
  126. (root.data > root.right.data &&
  127. checkBST(root.right)))
Add Comment
Please, Sign In to add comment