题目地址:二叉搜索树的后序遍历序列_牛客题霸_牛客网
题目回顾:
解题思路:
使用栈
栈的特点是:先进后出。
通读题目后,我们可以得出,二叉搜索树是左子节点小于根节点,右子节点大于根节点。
我们使用一个栈来存储当前的输入数组,也就是说,栈中先出的是根结点,如果数组元素小于栈顶元素,就表明此时它是左子树的根,大于栈顶元素就是右子树的根。
符合要求就是true,否则就是false。
整体代码:
public boolean VerifySquenceOfBST(int [] sequence) {
Stack<Integer> res = new Stack<>();
//特殊情况
if (sequence.length == 0)
return false;
int root = Integer.MAX_VALUE;
for (int i = sequence.length-1; i >= 0 ; i--) {
if (sequence[i] > root)
return false;
while (!res.isEmpty() && res.peek() > sequence[i]){
root = res.pop();
}
res.add(sequence[i]);
}
return true;
}