版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/83107994
判断某数组是否为二叉搜索树的后序遍历(包含测试) java
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
代码:
import java.util.*;
/**
* 判断某数组是否为二叉搜索树的后序遍历
* @author 娟娟
*
*/
public class Solution1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] st = sc.nextLine().split(" ");
int[] arr = new int[st.length];
for(int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(st[i]);
}
System.out.println(verify(arr));
}
public static boolean verify(int[] arr) {
if(arr.length == 0 || arr == null) {
return false;
}
return ways(arr, 0, arr.length - 1);
}
public static boolean ways(int[] arr, int start, int end) {
if(start >= end) {
return true;
}
int i = 0;
for(i = start; i < end; i++) {
if(arr[i] > arr[end]) {
break;
}
}
for(int j = i; j < end; j++) {
if(arr[j] < arr[end]) {
return false;
}
}
return ways(arr, start, i - 1) && ways(arr, i, end - 1);
}
}