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

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

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

class Solution {
public:
    vector<int>v;
    bool helper(int head,int tail){
        if(head>tail)return true;
        if(head==tail)return true;
        
        //只有左子树
        if(v[head]<v[tail]&&v[tail-1]<v[tail]){
            for(int i=head+1;i<tail-1;i++){
                if(v[i]>v[tail])return false;
            }
            return helper(head,tail-1);
        }
        //只有右子树
        if(v[head]>v[tail]&&v[tail-1]>v[tail]){
            for(int i=head+1;i<tail-1;i++){
                if(v[i]<v[tail])return false;
            }
            return helper(head,tail-1);
        }
        //既有左子树又有右子树
        int pos;
        for(pos=head;pos<tail;pos++)
            if(v[pos]<v[tail]&&v[pos+1]>v[tail])break;
        if(pos==tail)return false;
        for(int i=head+1;i<=pos;i++)
            if(v[i]>v[tail])return false;
        for(int i=pos+1;i<tail;i++)
            if(v[i]<v[tail])return false;
        return helper(head,pos)&&helper(pos+1,tail-1);
        
    }
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.empty())return false;
        v=sequence;
        return helper(0,v.size()-1);
    }
};
全部评论

相关推荐

03-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务