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?