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

Java 判断一个序列是否是搜索二叉树的后序遍历结果

2017-04-15 18:46 281 查看
//思路最后一个节点是二叉树的根节点,前面一些节点小于这个节点,后面节点大于这个节点
//如果后面一些节点有小于这个节点值的节点,那么就不是二叉搜索树的后序遍历,作为程序的退出点
//找到cut点,递归的执行这个函数

public class Main {

public static void main(String[] args) {
int[] array = { 5, 7, 6, 9, 11, 10, 8 ,111};
//		int[] array = { 7, 4, 6, 5 };
//		int[] array={6,7,8,5};
System.out.println(verfiySequenceOfBST(array));
}

public static boolean verfiySequenceOfBST(int[] input) {
if(input == null || input.length == 0){
return false;
}
int last = input.length-1;
int cut = 0;
for(int i = 0;i<input.length-1;i++){
if(input[i]>input[last]){
break;
}
cut = i+1;
}
for(int i = cut;i<input.length-1;i++){
if(input[i]<input[last]){
return false;
}
}
boolean left = true;
boolean right = true;
if(cut>0){
left = verfiySequenceOfBST(Arrays.copyOfRange(input, 0, cut));
}
if(cut<input.length-1){
right = verfiySequenceOfBST(Arrays.copyOfRange(input,cut,input.length-1));
}
return left && right;
}

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