巧妙地利用中序遍历,二叉搜索树的中序遍历一定是递增的,所以只需要按照中序遍历的顺序判断当前节点与上一节点。
class Solution {
public:
long pre = LONG_MIN;
bool isValidBST(TreeNode* root){
if(root==nullptr) return true;
if(!isValidBST(root->left)){
return false;
}
if(root->val<=pre) return false;
pre = root->val;
return isValidBST(root->right);
}
};