考点:
栈、数、递归
二叉搜索树、后序遍历
思路:
- 每次将二叉树分割成两部分,左子树与右子树
- 如果节点数量<=1,则返回True
- 如果节点数量不小于1,就要判断该子树是否符合后序遍历、的特点
主要有两个判断点:
p == j,用于判断是否是后序遍历
recur(),用于判断子树
class Solution {
public boolean verifyPostorder(int[] postorder) {
return recur(postorder,0,postorder.length-1);
}
public boolean recur(int[] postorder,int start,int end){
if(start >= end){
return true;
}
int p = start;
while(postorder[p] < postorder[end]){
p++;
}
int m = p;
while(postorder[p] > postorder[end]){
p++;
}
return p == end && recur(postorder,start,m-1) && recur(postorder,m,end-1);
}
}