class Solution {
public boolean verifyPostorder(int[] postorder) {
return dfs(postorder, 0, postorder.length - 1);
}
boolean dfs(int[] postorder, int left, int right){
if(left >= right) return true;
// 搜索树的性质
int pointer = left;
while(postorder[pointer] < postorder[right]) ++pointer;
int mid = pointer;
while(postorder[pointer] > postorder[right]) ++pointer;
// 判断此树以及左右子树是否正确
return pointer == right &&
dfs(postorder, left, mid - 1)&&
dfs(postorder, mid, right - 1);
}
}