class Solution {
public:
bool valid(TreeNode *node, stack<int>& s)
{
if( node == NULL ) return true;
stack<int> left,right;
if( !valid(node->left,left) )
return false;
if( !left.empty() )
{
if( left.top() >= node->val )
{
return false;
}
left.pop();
}
if( !valid(node->right,right) )
return false;
if( !right.empty() )
{
int t = right.top();
right.pop();
if( right.top() <= node->val )
{
right.pop();
return false;
}
right.push(t);
}
if( !left.empty() )
s.push(left.top());
else s.push(node->val);
if( !right.empty() )
s.push(right.top());
else s.push(node->val);
return true;
}
bool isValidBST(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<int> s;
return valid( root, s );
}
};
原文链接: https://www.cnblogs.com/jumpinGGrass/p/3174385.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94725
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!