这个题目没有看明白书中的解答方式,从B站上看明白一个算法解答,贴在上面作为理解,后续的将书上的看明白再去贴
import java.util.ArrayList;
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0){
return false;
}
if(sequence.length==1){
return true;
}
ArrayList<Integer> list=new ArrayList<>();
for(int i=0; i < sequence.length;i++){
list.add(sequence[i]);
}
return BST(list);
}
public boolean BST(ArrayList<Integer> list){
if(list.size()<1){
return true;
}
int len=list.size();
int mid=list.get(len-1);
ArrayList<Integer> leftList=new ArrayList<>();
ArrayList<Integer> rightList=new ArrayList<>();
int i=0;
while(list.get(i)<mid){
leftList.add(list.get(i++));
}
while(list.get(i)>mid){
rightList.add(list.get(i++));
}
if(i<list.size()-1){ //说明左子树和右子树没有遍历完,出现了特殊值,不符合二叉排序树的后序遍历
return false;
}
return BST(leftList)&&BST(rightList);
}
}