题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:因为是二叉搜索树,所以对于每个节点,前面连续比它小的和连续比它大的的个数之和一定和它在数组中的下标一样
public boolean VerifySquenceOfBST(int [] sequence) { int n=sequence.length; if(n==0) return false; //对于每个节点,前面连续比它小的和连续比它大的个数之和一定和它位置相邻,即i和n一样大 while(--n>0){ int i=0; while(sequence[i]<sequence[n]) i++; while(sequence[i]>sequence[n]) i++; if(i<n) return false; } return true; }