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 发布
本文介绍了一个用于判断给定数组是否为二叉搜索树后续遍历结果的算法。通过递归方式,该算法首先找到根节点,然后检查左右子树是否满足二叉搜索树的性质,最后递归验证左右子树。
3108

被折叠的 条评论
为什么被折叠?



