牛客网
后序:左右根
对于二叉排序树,左边一定比根小,右边一定比根大。
class Solution {
public:
vector<int> seq;
bool VerifySquenceOfBST(vector<int> sequence) {
if(sequence.empty()) return false;
seq = sequence;
return dfs(0, seq.size() - 1);
}
bool dfs(int l, int r){
if(l >= r) return true;
int k = l;
int root = seq[r];
while(seq[k] < root && k < r) k++; //找到右子树的开始
for(int j = k; j < r; j++){
if(seq[j] < root) return false;
}
return dfs(l, k-1) && dfs(k, r - 1);
}
};