二叉树中序遍历一遍,看是不是严格递增的
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;
}
};
本文介绍了一种通过中序遍历来验证二叉树是否为有效的二叉搜索树的方法,并提供两种实现方式:迭代和递归。迭代方法使用栈结构进行中序遍历并检查节点值是否递增;递归方法利用全局变量跟踪前一个访问节点的值,确保每个节点的值大于前一个节点。

311

被折叠的 条评论
为什么被折叠?



