A binary search tree (BST) is a node based binary tree data structure which has the following properties.
- The left subtree of 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
/* Returns true if a binary tree is a binary search tree */
int isBST(struct node* node) {if (node == NULL)return(true);/* false if the max of the left is > than us */if (node->left!=NULL && maxValue(node->left) > node->data)return(false);/* false if the min of the right is <= than us */if (node->right!=NULL && minValue(node->right) < node->data)return(false);/* false if, recursively, the left or right is not a BST */if (!isBST(node->left) || !isBST(node->right))return(false);/* passing all that, it's a BST */return(true);}
