bool validateBST(TreeNode* root, TreeNode*& pre) { if(!root) return true; if(!validateBST(root->left, pre)) return false; if(pre && pre->val>=root->val) return false; pre = root; return validateBST(root->right, pre); }
int main () { Node* root = createBST(std::vector<int>(2,3,4,5,6,7)); assert(validateBST(root)); return 0; }
bool isValidBST(TreeNode* root) { TreeNode *pre = NULL; return validateBST(root, pre); }