public class tmp1 {
public static void main(String[] args) {
int[] a = { 1, 3, 2, 5, 6, 4 };
System.out.println(VerifySquenceOfBST(a));
}
public static boolean VerifySquenceOfBST(int[] sequence) {
int len = sequence.length;
if (len == 0)
return false;
if (len == 1)
return true;
return digui(sequence, 0, len - 1);
}
public static boolean digui(int[] seq, int start, int end) {
if (start + 1 == end || start == end)
return true;
else if (start < end) {
int i = start;
for (; seq[i] < seq[end]; i++);
int mid = i;
for (; seq[i] > seq[end]; i++);
if (i == end) {
if (start <= mid - 1 && mid <= end - 1)
return digui(seq, start, mid - 1) && digui(seq, mid, end - 1);
else if (start <= mid - 1)
return digui(seq, start, mid - 1);
else
return digui(seq, mid, end - 1);
} else {
return false;
}
} else {
return false;
}
}
}
判断给定数组是不是二叉搜索树的后序遍历
最新推荐文章于 2018-08-12 17:40:50 发布