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


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

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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;
        }
    };
    
  • 相关阅读:
    安卓小助手
    位图切割器&位图裁剪器
    OAuth2.0 的简介
    多账户的统一登录方案
    常用的一些SQL语句
    SQL语句的优化
    SpringCloud简介与5大常用组件
    数据库为什么需要锁机制?有哪些锁机制?
    高并发下如何优化能避免服务器压力过大?
    Spring MVC 简介
  • 原文地址:https://www.cnblogs.com/hesper/p/10579311.html
Copyright © 2020-2023  润新知