二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
public boolean VerifySequenceOfBST(int[] array){ if(array == null || array.length <=0) return false; int N = array.length; return VerifySequenceOfBST(array,0,N-1); } public boolean VerifySequenceOfBST(int[] array,int left,int right){ if(left>=right){ return true; } int root = array[right]; //i记录比root(根节点)大的第一个元素的索引 int i = left; for(;i<right-1;i++){ if(array[i]>root) break; } for(int j=i;j<right-1;j++){ if(array[i]<root) return false; } return VerifySequenceOfBST(array,left,i-1)&&VerifySequenceOfBST(array,i,right-1); }