剑指Offer 二叉搜索树的后序遍历序列

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
 
思路:
后续遍历数组的尾部为根节点,前面的部分,必然一部分为左子树,一部分为又子树,二叉搜索树,根节点左子树小于根节点的值,右子树大于。
所以我们只用遍历前面的部分,找到第一个大与根节点的,然后看后面是不是都是大于根节点的,如果是,size-1.
 
AC代码:
 1 class Solution {
 2 public:
 3     bool VerifySquenceOfBST(vector<int> sequence) {
 4         int sqsize=sequence.size();
 5         int i=0;
 6         
 7         if(sqsize==0)
 8             return false;        
 9         
10         while(i<sqsize)
11         {
12             while(sequence[i]<sequence[sqsize-1])
13                 i++;
14             while(sequence[i]>sequence[sqsize-1])
15                 i++;
16             
17             if(i!=sqsize-1)
18                 return false;
19             i=0;
20             sqsize--;            
21         }
22         return true;
23     }
24 };
原文地址:https://www.cnblogs.com/SeekHit/p/5833445.html