- 初始化一个单调栈,父结点的值先设置为
+
∞
+∞
+∞
- 进行倒序的遍历,几下每个节点,先判断当前结点的值有没有比跟大,比根大,那额不满足二叉搜索树的定义了,直接false;
- 否则就将父结点进行更新,更新的情况就是当前栈不空且当前结点的值比栈顶的节点值还小,那么就循环的赋值。
- 入栈就好了。
- 判断完,没有返回false,就返回true了。
class Solution {
public boolean verifyPostorder(int[] postorder) {
Deque<Integer> stack = new LinkedList<>();
int root = Integer.MAX_VALUE;
for(int i = postorder.length - 1; i >= 0; i--){
if(postorder[i] > root){
return false;
}
while(!stack.isEmpty() && stack.peek() > postorder[i]){
root = stack.pop();
}
stack.push(postorder[i]);
}
return true;
}
}