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

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

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);
    }
};
全部评论

相关推荐

2本硕,在这一个下午真的绷不住了,浪费了太多时间,现在的技术栈还停在C语言和stm32上,找嵌入式的实习面试被拷打,找杭州的一个也找不到,真的心里难受,linux没学过,研二了开始慌了。
一条淡水魚:嵌入式这行的面试我认为实际项目比较重要,技术栈简单的提一嘴就行,面试官在乎的关键点在于你用了这些技术做了哪些工作解决了什么问题,而不是停留在离散的那些个技术栈上,那除了教课没有意义,好比你提到的c语言和32,你用32做过哪些具体的项目?接触过什么外设?使用过哪些公司的SDK?有没有实际产品落地?以及各种只有进入真正的生产环节当中才会积累到的经验......主动去和面试官讨论这些实际的问题,甚至还能就某个具体参数的合理性与他去简单探讨一下,只要技术栈对口,基本上就稳啦~(另外linux和RTOS是嵌入式的标配哦,选一个方向走下去吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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