package java2019;
//判断一个数组,是否是某个二叉搜索树的后续遍历的结果
public class Demo21 {
public boolean judge(int Array[],int l,int r){
if(l>=r)
return true;
int i=r;
while(i>1&&Array[i-1]>Array[r]){
i--; //得到左右子树的分界点,无形中也过滤了右子树
}
for(int j=i-1;j>=1;j--)//判断左子树是否有大于根节点的
if(Array[j]>Array[r])
return false;
return judge(Array,1,i-1)&&judge(Array,i,r-1);
}
public boolean VerifySequenceOfBST(int[] a){
if(a.length==0)
return false;
return judge(a,0,a.length-1);
}
public static void main(String[] args){
Demo21 d21 = new Demo21();
int a[] = {1,3,2,7,3,10,8};
System.out.println(d21.VerifySequenceOfBST(a));
}
}
21.判断一个数组是否是某个二叉搜索树的后续遍历的结果
最新推荐文章于 2021-04-06 22:51:20 发布