这题要多想,首相二叉平衡树的判断一定要从全局来看,分别大于小于某个数!!!,第二点,我被最大最小值卡了,所以就用了long long int然后改最大最小值,2刷刷好看一点的代码,思路要更加清晰
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool mark;
void findit(TreeNode* root, long long int minn, long long int maxx){
if(root == NULL) return ;
if(mark == false) return ;
if(!(root -> val < maxx && root -> val > minn)){
mark = false;
return ;
}
if(root -> left != NULL){
if(root -> left -> val >= root -> val){
mark = false;
return ;
}
findit(root -> left, minn, root -> val);
}
if(root -> right != NULL){
if(root -> right -> val <= root -> val){
mark = false;
return ;
}
findit(root -> right, root -> val, maxx);
}
return ;
}
bool isValidBST(TreeNode* root) {
mark = true;
if(root == NULL) return true;
findit(root, -2147483649, 2147483648);
return mark;
}
};