二叉树中序遍历一遍,看是不是严格递增的
class Solution {
public:
bool isValidBST(TreeNode *root) {
if(root==NULL)
return true;
bool res=true;
stack<TreeNode*> stack;
vector<int> vec;
while(root!=NULL){
stack.push(root);
root=root->left;
}
while(!stack.empty()){
TreeNode *p=stack.top();
stack.pop();
vec.push_back(p->val);
if(p->right!=NULL){
p=p->right;
while(p){
stack.push(p);
p=p->left;
}
}
}
for(int i=0;i<vec.size()-1;i++)
if(vec[i]>=vec[i+1]){
res=false;
break;
}
return res;
}
};
看别人的。。递归
class Solution {
int last=INT_MIN;
public:
bool isValidBST(TreeNode *root) {
if(root==NULL)
return true;
if(!isValidBST(root->left))
return false;
if(last>=root->val)
return false;
last=root->val;
if(!isValidBST(root->right))
return false;
return true;
}
};