zoukankan      html  css  js  c++  java
  • 剑指offer——二叉搜索树中的后序遍历序列

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

    输入描述:

    输入:5 7 6 9 11 10 8

    输出:true

    C++代码:

    class Solution {
    public:
    //非递归方式
    bool VerifySquenceOfBST(vector<int> sequence) {
    		int size = sequence.size();
    		if (size == 0)return false;
    
    		int i = 0;
    		while (--size)
    		{
    			while (sequence[i++] < sequence[size]);
    			while (sequence[i] > sequence[size]){
                    if(i>=size) return true;
                    i++;
                }
    			if (i < size)return false;
    			i = 0;
    		}
    		return true;
    	}
    
    //递归方式
    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));
    		}
    public:
    	bool VerifySquenceOfBST2(vector<int> sequence) {
    		if (sequence.empty())return false;
    		return judge(sequence, 0, sequence.size() - 1);
    	}
    };
    天上我才必有用,千金散尽还复来!
  • 相关阅读:
    viewport
    Flex 布局教程
    鼠标放上去盒子向上滑动
    鼠标放图片上,原图上划上去一个透明图片
    类加载过程
    JVM入门
    redis简介和安装
    JMH和Disruport
    线程池
    JUC
  • 原文地址:https://www.cnblogs.com/lutaishi/p/13436297.html
Copyright © 2011-2022 走看看