zoukankan      html  css  js  c++  java
  • 二叉搜索树的后序遍历序列

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

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    不是很懂, 待解决

    大体思路是找数组中比最后一个元素大的第一个元素的位置, 这个元素之后的所有元素要比最后一个元素大, 否则返回false, 解题有递归版和非递归版, 均源自牛客网, 不过原版中把自增都写入while循环中, 貌似有些问题

    递归版:

    class Solution {
    public:
        
        bool isLastOrder(vector<int> sequence, int b, int e) {
            if (b == e) {
                return true;
            }
            int mid = b;
            while(sequence[mid] < sequence[e] && mid < e) 
                mid++;
            int temp = mid;
            while(sequence[temp] > sequence[e] && temp < e)
                temp++;
            if (temp < e){
                return false;
            }
            if(mid == e || mid == b) {
                return isLastOrder(sequence, b, e - 1);
            }
            else {
                return isLastOrder(sequence, b, mid - 1) && isLastOrder(sequence, mid, e - 1);
            }
        }
        
        bool VerifySquenceOfBST(vector<int> sequence) {
            if (sequence.empty()) {
                return false;
            }
            
            return isLastOrder(sequence, 0, sequence.size() - 1);
        }
    };
    

    非递归版:

    class Solution {
    public:
        bool VerifySquenceOfBST(vector<int> sequence) {
            if(0 == sequence.size()) {
                return false;
            }
            
            int i = sequence.size();
            int j = 0;
            while(--i) {
                while((sequence[j] < sequence[i]) && j < i)    j++;
                while((sequence[j] > sequence[i]) && j < i)    j++;
                if (j != i)    return false;
                else {
                    j = 0;
                }
            }
            
            return true;
        }
    };
    
  • 相关阅读:
    使用可跨平台的函数执行命令
    linux查看及修改文件权限以及相关
    php 文件缓存类
    秒杀抢购思路以及高并发下数据安全
    php 无限分类
    isset ,empty,is_null 区别
    phpstorm 在线激活码
    phpstorm 不能提示代码tp 3.2 $this->display等 解决办法
    laravel-ide-helper 遇到There are no commands defined问题怎么解决
    NFS共享服务
  • 原文地址:https://www.cnblogs.com/hesper/p/10579311.html
Copyright © 2011-2022 走看看