98. Validate Binary Search Tree
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
- 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
class Solution { bool recursive(TreeNode* node, long min, long max) { bool ret = true; if(node->left != nullptr) { if(node->val > node->left->val && node->left->val > min) ret &= recursive(node->left, min, node->val); else return false; } if(ret && node->right != nullptr){ if(node->val < node->right->val && node->right->val < max) ret &= recursive(node->right, node->val, max); else return false; }
return ret; } public: bool isValidBST(TreeNode* root) { return recursive(root, (long)INT_MIN - 1, (long)INT_MAX + 1); } };
|