如果输入 7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回 false 。
思路:对于树的很多问题都是可以使用递归来解决。这道题也不例外。首先明白后序遍历的特点,最后一个是根元素。左子树都比根元素打,右子树都比根元素小,然后再递归检测左右子树。
bool helper_verify(vector<int>& vec,int begin,int end)
{
int i,j;
if(end-begin <=1)
return true;
for(i=begin;i<end;i++)
if(vec[i] > vec[end])
break;
for(j=i;j<end;j++)
if(vec[j] < vec[end])
break;
if(j<end-1)
return false;
return helper_verify(vec,begin,i-1) && helper_verify(vec,i,end-1);
}
bool verifyBST(vector<int>& vec)
{
if(vec.size() <=1)
return true;
return helper_verify(vec,0,vec.size()-1);
}原文地址:http://blog.csdn.net/yusiguyuan/article/details/45345529