首页 > 代码库 > 判断二叉搜索树的后序遍历序列
判断二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
分析:采用递归的思想,先找出根节点,左子树元素都必须比根节点小,右子树节点都比根节点大,否则返回false.
得到子树(子序列)的两种方法:
①用下标把数组 逻辑分为几个子数组(这里采用的是这种)
②用工具类Arrays把数组分割
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence==null || sequence.length==0) return false;
return IsTreeOfBST(sequence,0,sequence.length-1);
}
public boolean IsTreeOfBST(int [] sequence,int start,int end){ //子数组为空
if(end<=start) return true;
int i=0;
for(;i<end;i++){//找到左右子树分割点
if(sequence[i]>sequence[end]) break;
}
for(int j=i;j<end;j++){
if(sequence[j]<sequence[end]) return false;
}
//递归
return IsTreeOfBST(sequence,0,i-1)&&IsTreeOfBST(sequence,i,end-1);
}
}
判断二叉搜索树的后序遍历序列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。