题解 | 二叉搜索树的后序遍历序列
写的有点长了。主要想注意这里要注意由于判断空树为false,所以必须就要另建一个函数来做递归
import java.util.*;
public class Solution {
public boolean VerifyOrder(int [] sequence) {
int len = sequence.length;
int root = 0;
if (len != 0)
root = sequence[len - 1];
if(len < 1)
return true;
int cont1 = 0;
int cont2 = 0;
for (int i = 0; i < len-1; i++) {
if (sequence[cont1] < root) {
cont1++;
} else {
break;
}
}
if(cont1==len-1){
boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1));
return left;
}
for (int i = cont1; i < len; i++) {
if (sequence[i] > root) {
cont2++;
} else {
break;
}
}
if (cont1 + cont2 < len - 1) {
return false;
} else {
boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1));
boolean right = VerifyOrder(Arrays.copyOfRange(sequence,cont1, len-1));
return (left & right);
}
}
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length == 0){
return false;
}
return VerifyOrder(sequence);
}
}