From a50af027f07b84471db643e357a51d7e2a1a8578 Mon Sep 17 00:00:00 2001 From: Rohit Bhoompally Date: Tue, 23 Sep 2014 16:24:15 -0400 Subject: [PATCH 1/2] Binary search tree check - java. --- solutions/java/BinarySearchTreeCheck.java | 105 ++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 solutions/java/BinarySearchTreeCheck.java diff --git a/solutions/java/BinarySearchTreeCheck.java b/solutions/java/BinarySearchTreeCheck.java new file mode 100644 index 0000000..3a7e723 --- /dev/null +++ b/solutions/java/BinarySearchTreeCheck.java @@ -0,0 +1,105 @@ + +public class BinarySearchTreeCheck { + Node root; + + public BinarySearchTreeCheck() { + root = null; + } + + public class Node { + int value; + Node left; + Node right; + + public Node(int value) { + this.value = value; + this.left = null; + this.right = null; + } + + public void setLeft(Node left) { + this.left = left; + } + + public Node getLeft() { + return left; + } + + public void setRight(Node right) { + this.right = right; + } + + public Node getRight() { + return right; + } + + public int getValue() { + return value; + } + } + + public void createBinaryTree(int option) { + root = new Node(10); + Node one = new Node(8); + Node two = new Node(5); + Node three = new Node(9); + Node four = new Node(15); + switch (option) { + case 1: /* Is BST (Only unique elements) */ + root.setLeft(one); + root.setRight(four); + one.setLeft(two); + one.setRight(three); + break; + case 2: /* Not BST (Only unique elements) */ + root.setRight(two); + root.setLeft(one); + one.setLeft(four); + one.setRight(three); + break; + default: + break; + } + } + + public boolean isBSTBetter() { + if (root == null) + return true; + return isBSTBetter(root); + } + + private Integer prev = null; + + public boolean isBSTBetter(Node cur) { + if (cur == null) + return true; + + // Check for the left subtree + if (!isBSTBetter(cur.getLeft())) { + return false; + } + + // Check the cur value and update prev + if (prev != null && cur.getValue() <= prev) + return false; + prev = cur.getValue(); + + // Check for the right subtree + if (!isBSTBetter(cur.getRight())) { + return false; + } + + return true; + } + + public static void main(String[] args) { + BinarySearchTreeCheck btOne = new BinarySearchTreeCheck(); + btOne.createBinaryTree(1); + BinarySearchTreeCheck btTwo = new BinarySearchTreeCheck(); + btTwo.createBinaryTree(2); + + // Only works if all the elements in the Binary Tree are unique. + System.out.println(btOne.isBSTBetter()); + System.out.println(btTwo.isBSTBetter()); + } +} \ No newline at end of file From f4646da71429c4d36d70dc4f4831fd0f004fff23 Mon Sep 17 00:00:00 2001 From: Rohit Bhoompally Date: Tue, 23 Sep 2014 16:26:22 -0400 Subject: [PATCH 2/2] Binary Search Tree Check - Java --- solutions/java/BinarySearchTreeCheck.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/java/BinarySearchTreeCheck.java b/solutions/java/BinarySearchTreeCheck.java index 3a7e723..efdda83 100644 --- a/solutions/java/BinarySearchTreeCheck.java +++ b/solutions/java/BinarySearchTreeCheck.java @@ -1,4 +1,4 @@ - +/* Uses Inorder traversal. Only works on unique element BT */ public class BinarySearchTreeCheck { Node root;