思路:
1. 难点在于构造递归函数的参数
2. 参数要包含上下界, 才能具有全局性. 第一次提交 WA 了, 因为写成来的判断函数是局部性的
代码:
const int POS = 1E9; const int NEG = -1E9; class Solution { public: bool ans; bool isValidBST(TreeNode *root) { if(root == NULL) return true; ans = true; if(root->left) isBST(root->left, NEG, root->val); if(root->right) isBST(root->right, root->val, POS); return ans; } void isBST(TreeNode *root, const int &minval, const int &maxval) { if(root->val >= maxval || root->val <= minval) ans = false; if(root->left && ans) { isBST(root->left, minval, root->val); } if(root->right && ans) isBST(root->right, root->val, maxval); } };