In: Computer Science
public class ValidBST {
    class BSTTest<Key extends Comparable<Key>, Value> {
        private Node root;             // root of BST
        private class Node {
            private Key key;           // sorted by key
            private Value val;         // associated data
            private Node left, right;  // left and right subtrees
            public Node(Key key, Value val) {
                this.key = key;
                this.val = val;
            }
        }
    }
    public boolean isValidBST(BSTTest bst) {
        return false;
    }
    public static void main(String[] args) {
    }
}
The following is definition of Binary Search Tree(BST)
Binary Search Tree, is a node-based binary tree data structure which has the following properties:
// Java program to demonstrate insert operation in binary search
tree
class BinarySearchTree {
   /* Class containing left and right child of current
node and key value*/
   class Node {
       int key;
       Node left, right;
       public Node(int item) {
           key =
item;
           left = right =
null;
       }
   }
   // Root of BST
   Node root;
   // Constructor
   BinarySearchTree() {
       root = null;
   }
   // This method mainly calls insertRec()
   void insert(int key) {
   root = insertRec(root, key);
   }
  
   /* A recursive function to insert a new key in BST
*/
   Node insertRec(Node root, int key) {
       /* If the tree is empty, return
a new node */
       if (root == null) {
           root = new
Node(key);
           return
root;
       }
       /* Otherwise, recur down the
tree */
       if (key < root.key)
           root.left =
insertRec(root.left, key);
       else if (key > root.key)
           root.right =
insertRec(root.right, key);
       /* return the (unchanged) node
pointer */
       return root;
   }
   // This method mainly calls InorderRec()
   void inorder() {
   inorderRec(root);
   }
   // A utility function to do inorder traversal of
BST
   void inorderRec(Node root) {
       if (root != null) {
          
inorderRec(root.left);
          
System.out.println(root.key);
          
inorderRec(root.right);
       }
   }
   // Driver Program to test above functions
   public static void main(String[] args) {
       BinarySearchTree tree = new
BinarySearchTree();
       /* Let us create following
BST
           50
       /   \
       30   70
       / \ / \
   20 40 60 80 */
       tree.insert(50);
       tree.insert(30);
       tree.insert(20);
       tree.insert(40);
       tree.insert(70);
       tree.insert(60);
       tree.insert(80);
       // print inorder traversal of
the BST
       tree.inorder();
   }
}