二叉搜索树的特点:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
后序遍历的特点:遍历顺序左右根,因此根节点位于当前序列的末尾,小于根结点的值为左子树上节点,大于根结点的值为右子树上节点
关键点:找出左右子树的序列范围进行递归
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
if(sequence.empty())
return false;
return VerifySqu(sequence,0,sequence.size());
}
bool VerifySqu(vector<int> sequence,int st,int et){
if(st>=et)
return true;
int guard=sequence[et];
int i=st;
for(;i<et;i++){
if(sequence[i]>guard)
break;
}
for(int j=i;j<et;j++){
if(sequence[j]<guard)
return false;
}
return VerifySqu(sequence,st,i-1)&&VerifySqu(sequence,i,et-1);
}
};


京公网安备 11010502036488号