输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
import java.util.Stack;
import java.util.Arrays;
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
int []arr=sequence.clone();
Arrays.sort(arr);//构造二叉搜索树的中序遍历(有序数组)
return panDuan(arr,sequence);
}
//中序序列当做栈的压入序列,那么后序序列是该栈的一个弹出序列。
public boolean panDuan(int [] pushA,int [] popA){
if(pushA.length==0||popA.length==0)
return false;
int index=0;
Stack<Integer> s=new Stack<>();
for(int i=0;i<pushA.length;i++){
s.push(pushA[i]);
while(!s.isEmpty() && s.peek()==popA[index]){
s.pop();
index++;
}
}
return s.isEmpty();
}
}