my solution failed for second example i dont know why, pls explain.
Here is the question:
Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a 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.
Example 1:
2
/ \
1 3
Input: [2,1,3]
Output: true
Example 2:
5
/ \
1 4
/ \
3 6
Input: [5,1,4,null,null,3,6]
Output: false
Explanation: The root node's value is 5 but its right child's value is 4.
class Solution {
public:
bool util(TreeNode*root,int minv=INT_MIN,int maxv=INT_MAX)
{ if(root==NULL)
return true;
if((root->val >= minv and root->val <= maxv) and
util(root->left,minv,root->val)and util(root->right,root->val,maxv));
return true;
return false;
}
bool isValidBST(TreeNode* root) {
return util(root);
}
};