您的位置:首页 > 编程语言 > Java开发

【算法-java】判断该数组是不是某二叉搜索树的后序遍历的结果

2017-05-16 14:59 489 查看
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0)return false;
return isSquenceOfBST(0,sequence.length-1,sequence);
}
public boolean isSquenceOfBST(int low,int high,int[] sequence){
/**
*检查当前是不是二叉搜索树的后序遍历的结果
**/
int root =sequence[high];
int mid =high-1;//左右子树分割线,左子树high下标
if(high<=low)return true;//递归终止条件
while(sequence[mid]>root){//定位mid
mid--;//从high往low定位
if(mid<low)return true;//符合二叉搜索树的后序遍历的结果
}
for(int i=low;i<=mid;i++){//检查是不是否存在不是二叉搜索树的后序遍历的结果
if(sequence[i]>root)return false;
}

/**
*递归检查是不是二叉搜索树的后序遍历的结果
**/
if(!isSquenceOfBST(low,mid,sequence)){//检查左子树
return false;
}
if(!isSquenceOfBST(mid+1,high-1,sequence)){//检查右子树
return false;
}

return true;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 java
相关文章推荐