zoukankan      html  css  js  c++  java
  • 【剑指offer23 二叉搜索树的后序遍历序列】

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
     
    二叉搜索树,中序遍历的最后一个元素是中间值,找到前一半比它小的,后一半比他大。
    如果不满足一半小一半大,就false
    满足就递归左右部分
     
    class Solution {
    public:
        
        bool judge(vector<int>& a, int l, int r){
            if(l >= r) return true;
            int i = r;
            while(i > l && a[i - 1] > a[r]) --i;//到达分界点的比头大的元素
            for(int j = i - 1; j >= l; --j) if(a[j] > a[r]) return false;
            return judge(a, l, i - 1) && (judge(a, i, r - 1));
        }
        
        bool VerifySquenceOfBST(vector<int> sequence) {
            if(!sequence.size()) return false;
            return judge(sequence, 0, sequence.size() - 1);
            
            
            
            /* CLion能过 但是 这上面过不了
            //return false;
            if(sequence.empty())return false;
            int len = sequence.size();
            if(len<=2)return true;
            
            int tou = sequence[len-1]; // 此时二叉树的头
            int flag = 0; //在某个位置前面 都应该比tou小  后面的都比头大
            int flag_i ;
            for(int i=0 ; i<len-1 ; ++i){
                if(sequence[i]<tou)flag_i=i;//会到最后一个比tou小的地方
                if(sequence[i]>tou)flag=1;//只要出现了比头大的  后面就应该都要大
                if(flag == 1 && sequence[i]<tou)return false;//后面出现比头小的了
            }
            vector<int> sequence_front , sequence_back;
            for(int i=0 ; i <=flag_i ; ++i)sequence_front.push_back(sequence[i]);
            for(int i=flag_i+1 ; i <len-1 ; ++i)sequence_back.push_back(sequence[i]);
            return VerifySquenceOfBST(sequence_front) && VerifySquenceOfBST(sequence_back);
            */
        }
    };
  • 相关阅读:
    多种方式实现数组的扁平化处理
    利用node中的内置模块fs实现对简单文件的读取 拷贝 创建等功能
    浅谈es5和es6中的继承
    js之冒泡排序与快速排序
    IE5,IE6,IE7,IE8的css兼容性列表[转自MSDN]
    css3 动画
    各种浏览器css hack
    解决li在ie,firefox中行高不一致问题
    Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
    png-24在ie6中的几种透明方法
  • 原文地址:https://www.cnblogs.com/Stephen-Jixing/p/13129475.html
Copyright © 2011-2022 走看看