2021年9月14日21:06:06
还有种栈的 懒得看了
最后的r-1
return recur(sequence,l,i-1) && recur(sequence,i,r-1)
没有检查出来
1.分治递归
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length == 0) return false;
return recur(sequence,0,sequence.length-1);
}
public boolean recur(int [] sequence, int l, int r){
//判断[l r]区间是不是一个二叉搜索树
if(l>=r) return true;
int root = sequence[r];
int i = l;
//搜索到右子树的开始
for(; i<r;i++){
if(sequence[i] > root) break;
}
//左子树判断是不是符合条件
for(int j = l; j<i ;j++){
if(sequence[j] > root) return false;
}
//右子树判断是不是符合条件
for(int j = i; j<r ;j++){
if(sequence[j] < root) return false;
}
//返回左右子树数
return recur(sequence,l,i-1) && recur(sequence,i,r-1);
}
}


京公网安备 11010502036488号