标签:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence == null || sequence.length == 0) {
return false;
}
return verify(sequence, 0, sequence.length - 1);
}
public boolean verify(int[] data, int start, int end) {
if (data == null || data.length == 0) {
return false;
}
// 二叉搜索树中左子树的结点小于根结点
int i = start;
for (; i < end; i++) {
if (data[i] > data[end]) {
break;
}
}
// 二叉搜索树中右子树的结点大于根结点
int j = i;
for (; j < end; j++) {
if (data[j] < data[end]) {
return false;
}
}
// 判断左子树是不是二叉搜索树
boolean left = true;
if (i - start > 0) {
left = verify(data, start, i - 1);
}
// 判断右子树是不是二叉搜索树
boolean right = true;
if (i < end) {
right = verify(data, i, end - 1);
}
return (left && right);
}
}
标签:
原文地址:http://www.cnblogs.com/rosending/p/5625035.html