我这里借鉴一位大佬的很奇妙的思路:
遍历的时候,如果遇到比最后一个元素大的节点,就说明它的前面都比最后一个元素小,该元素后面的所有值都必须大于最后一个值,这两个条件必须都要满足。否则就说明该序列不是二叉树后序遍历。
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence.length == 0||sequence == null) {
return false;
}
int root = sequence.length-1;
int count = 0;
while (root>0) {
while (sequence[root]>sequence[count]) {
count++;
}
while (sequence[root]<sequence[count]) {
count++;
}
if (count<root) {
return false;
}
root--;
count = 0;
}
return true;
}