C++: Binary Search Tree Verification


struct TreeNode {
	int data;
	TreeNode *left;
	TreeNode *right;

bool isBST(TreeNode *node, int minData, int maxData) {
	if(node == NULL) return true;
	if(node->data < minData || node->data > maxData) return false;

	return isBST(node->left, minData, node->data) && isBST(node->right, node->data, maxData);
//The initial call to this function can be something like this:

if(isBST(root, INT_MIN, INT_MAX)) {
	puts("This is a BST.");
} else {
	puts("This is NOT a BST!");