您的位置:首页 > Web前端

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

2018-04-03 10:30 375 查看

原题描述

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

思路

       采用递归的思想。首先明确二叉搜索树的概念(左小右大),不要与二叉线索树混淆了。以数组的最后一个数为根节点,根据左小右大的原则找到右子树的第一个结点,然后判定右子树中是否有小于根节点的值,有则返回false;最后注意递归结束的条件为low>=high。
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
return VerifyLocalSqunenceOfBST(sequence,0,sequence.size()-1);
}
bool VerifyLocalSqunenceOfBST(vector<int>sequence,int low,int high){
if(sequence.size()==0) return false;
if(low>=high) return true;
int i=low;
while(sequence[i]<sequence[high]){
i++;
}
for(int j=i;j<high;j++){
if(sequence[j]<sequence[high]) return false;
}
return VerifyLocalSqunenceOfBST(sequence,low,i-1)&&VerifyLocalSqunenceOfBST(sequence,i,high-1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: