- 26th Oct 2021
- 04:51 am
- Admin
//Java program -> check if a given array is a binary search tree or not /*---TEST CASES-------------------------------------------------------- Case 1: 2 4 5 FALSE Case 2: 10 5 15 2 7 11 25 1 TRUE Case 3: 50500 TRUE Case 4: 90 50 150 20 75 95 175 5 25 66 80 92 111 166 200 TRUE Case 5: 90 50 150 20 75 95 175 5 25 66 91 93 111 166 200 FALSE Case 6: 8 4 12 2 6 10 14 1 3 5 99 9 11 13 15 FALSE */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // parse the array representing the binary search binaryTreeObj int[] binaryTree; String input = sc.nextLine(); if (input.equals("")) { binaryTree = new int[0]; } else { String[] binaryTreeStrings = input.split(" "); binaryTree = new int[binaryTreeStrings.length]; for (int i = 0; i < binaryTreeStrings.length; i++) { binaryTree[i] = Integer.parseInt(binaryTreeStrings[i]); } // check if this is a binary search tree, print the result System.out.println(isBinarySearchTree(binaryTree)); } } public static boolean isBinarySearchTree(int[] binaryTree) { //TODO fill this in, along with any deeded helper fuctions Main binaryTreeObj = new Main(); try { binaryTreeObj.root = new CurrentNode(binaryTree[0]); binaryTreeObj.root.left = new CurrentNode(binaryTree[1]); binaryTreeObj.root.right = new CurrentNode(binaryTree[2]); binaryTreeObj.root.left.left = new CurrentNode(binaryTree[3]); binaryTreeObj.root.left.right = new CurrentNode(binaryTree[4]); binaryTreeObj.root.right.left = new CurrentNode(binaryTree[5]); binaryTreeObj.root.right.right = new CurrentNode(binaryTree[6]); binaryTreeObj.root.left.left.left = new CurrentNode(binaryTree[7]); binaryTreeObj.root.left.left.right = new CurrentNode(binaryTree[8]); binaryTreeObj.root.left.right.left = new CurrentNode(binaryTree[9]); binaryTreeObj.root.left.right.right = new CurrentNode(binaryTree[10]); binaryTreeObj.root.right.left.left = new CurrentNode(binaryTree[11]); binaryTreeObj.root.right.left.right = new CurrentNode(binaryTree[12]); binaryTreeObj.root.right.right.left = new CurrentNode(binaryTree[13]); binaryTreeObj.root.right.right.right = new CurrentNode(binaryTree[14]); binaryTreeObj.root.left.left.left.left = new CurrentNode(binaryTree[15]); binaryTreeObj.root.left.left.left.right = new CurrentNode(binaryTree[16]); } catch (ArrayIndexOutOfBoundsException ex1) { //ex1.printStackTrace(); } catch (UnsupportedOperationException ex2) { throw new UnsupportedOperationException(); } return checkIsBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE); } static CurrentNode root; //Root of the Binary Tree /* Returns true if the given tree is a BST and its values are >= min and <= max. */ static boolean checkIsBST(CurrentNode node, int min, int max) { if (node == null) { return true; } if (node.data < min || node.data > max) { return false; } return (checkIsBST(node.left, min, node.data - 1) && checkIsBST(node.right, node.data + 1, max)); } } /* Class containing left and right child of current node and key value*/ class CurrentNode { int data; CurrentNode left, right; // Constructor public CurrentNode(int item) { data = item; left = right = null; } }
Java Assignement Solution
Incase you need a paraphrased version, the code remains functionally equivalent to the above code with changes made to rephrase some of the comments, improve code readability with indentation, and correct typos then reach out to our Java assignment help experts.