题解 | 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列

https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd

#include <climits>
class Solution {
public:
    //对数组进行逆序检测,会按照根节点-》右子树-》左子树 的顺序,并且以此检测是按照,根-》右子树-》右子树根-》右子树,直到遇到小于前一个数的值,即最下层的左子树,
    //数大于后面的数,即它是前一个数的右子树且根节点,若数小于后数,则遇到了左子树,但不知道是谁的左子树,栈维护;
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.empty()){
            return false;
        }
        int root = INT_MAX;
        stack<int> s;
        for(int i=sequence.size()-1; i >= 0; --i){
            if(sequence[i] > root){   
                //左子树却存在大于其根节点的值那么就是不合法的
                return false;
            }
            while(!s.empty() && s.top() > sequence[i]){ //对左子树找它的根节点
                root = s.top();s.pop();
            }
            s.push(sequence[i]);  //存入根节点
        }
        return true;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 18:33
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务