question

Devise an algorithm to check if a binary tree is a binary search tree.

A simple check between left and right nodes will not suffice. Think of what happens in
a deeper tree and the criteria numbers at the bottom must fulfill.

A simple check of the left and right child node will not suffice for this. Take a look
at this binary tree:

Because 7 is less than 9, a simple localized check between left and right nodes would not provide the correct answer. Instead we keep track of the minimum and maximum value a node can be at any point in the tree.

Because 7 is less than 9, a simple localized check between left and right nodes would not provide the correct answer. Instead we keep track of the minimum and maximum value a node can be at any point in the tree.

```
```**isBST**(Node root)

**return isBSTHelper**(root, INTEGER_MIN, INTEGER_MAX)

**isBSTHelper**(Node n, int min, int max)

**if** (n == null)

**return** true;

**if** (n.data > min && n.data < max)

**return isBSTHelper**(n.left, min, n.data) && **isBSTHelper**(n.right, n.data, max);

**return** false;