BinarySearchTree(code with comments)