如果输入 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