How to find a tree is BST or not
Sigiloso
Node* MinChild(Node* node) { if (node->left) return MinChild(node->left); else if (node->right) return MinChild(node->right); else return node; } Node* MaxChild(Node* node) { if (node->right) return MaxChild(node->right); else if (node->left) return MaxChild(node->left); else return node; } bool IsBst(Node* node) { // assumedly an empty tree is not a BST if (!node) return false; if (node->left) { Node* tmp = MaxChild(node->left); if (tmp->val > node->val) return false; if (!IsBst(node->left)) return false; } if (node->right) { Node* tmp = MinChild(node->left); if (tmp->val val) return false; if (!IsBst(node->right)) return false; } return true; }