Validate Binary Search Tree
class Solution {
public:
bool isValidBST(TreeNode *root) {
return isValidNode(root, INT_MAX, INT_MIN);
}
bool isValidNode(TreeNode * p, int max, int min)
{
if(!p)
return true;
//为了不到最大最小值 所以max-1 min+1 可以在下一步比较极限值。
else if((p->val == INT_MIN && p->left != NULL) || (p->val == INT_MAX && p->right != NULL))
return false;
return p->val <= max && p->val >= min&&isValidNode(p->left, p->val - 1, min) && isValidNode(p->right, max, p->val + 1);
}
};
Last updated
Was this helpful?