【剑指offer】二叉搜索树的后序遍历序列(树)

版权声明:本文为原创博客,未经允许,请勿转载。 https://blog.csdn.net/u013095333/article/details/88599568

题目描述

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

链接

https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

代码

class Solution {
public:
	int first = 0;
    bool VerifySquenceOfBST(vector<int> sequence) {
    	if(this->first == 0 && sequence.size() == 0){
    		return false;
    	}
		this->first = 1;
		bool flag = true;
		vector<int> s1;
		vector<int> s2;
		if(sequence.size() == 0){
			return true;
		}
		if(sequence.size() == 1){
			return true;
		}
		int len = sequence.size();
		int root = sequence[len-1];
		int i = 0;
		for(i = 0; sequence[i] < root; i++){
			s1.push_back(sequence[i]);
		}
		for( ; i < len-1; i++){
			if(sequence[i] < root){
				flag = false;
				break;
			}
			else{
				s2.push_back(sequence[i]);
			}
		}
		if(flag){
			flag = VerifySquenceOfBST(s1) && VerifySquenceOfBST(s2);
		}
		return flag;
    }
};

猜你喜欢

转载自blog.csdn.net/u013095333/article/details/88599568