Thursday is code puzzler day here at DZone. The idea is simple: solve the coding problem as efficiently as you can, in any language or framework that you find suitable.

*Note: Even
though there really is nothing stopping you from finding a solution to
this on the internet, try to keep honest, and come up with your own
answer. It's all about the participation!*

Do you have code puzzlers that you'd like to share with the DZone community? If so, please submit here.

**Verify if the tree is a binary search tree**

Given a tree structure, provide a method that will verify whether or not it is actually a binary search tree. The Tree consists of a number of Node objects, each of which has a value and a reference to a right and left Node object.

Note that a BST is different to a standard binary tree because of the following properties :

- The leftsubtreeof a node contains only nodes with keys less than the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- Both the left and right subtrees must also be binary search trees.
- There must be no duplicate nodes.

For more on Binary Search Trees, check this article on Wikipedia.

Catch up on all our previous puzzlers here.

## Comments

## Vijay Nathani replied on Thu, 2013/01/03 - 5:22am

Groovy code

## Erik Colban replied on Thu, 2013/01/03 - 8:32pm

## Vijay Nathani replied on Fri, 2013/01/04 - 1:58am in response to: Erik Colban

This is a better solution than mine because my previous solution did not make certain checks. The solution in groovy is

## Erik Colban replied on Fri, 2013/01/04 - 4:09am

Vijay,

Are you assuming that the key is an int or a long? If the key is an int, then the arguments of verifyBST could be int's. The problem then is that if min == Integer.MIN_VALUE and n == min, then n - 1 == Integer.MAX_VALUE. I guess that is the reason you used long's.

I suggest the following change: