输入一个数组,判断是不是某个二叉寻找树的后序遍历结果,假如数组中任意两个数字都不相同则返回true
二叉树搜索数树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
明确搜索二叉树的定义后,后序遍历中最后一个值是根节点,根节点之前的数分为两部分用来表示左右子树
//be=0;end=A.length boolean SquenceOfBST ( int A[], int be, int end ){ if(A==null ||a.length<=0) return false; int root=A[end-1]; //左子树0->i-1 int i=0; while(i<end-1){ if(A[i]>root) break; i++; } //右子树i->j-1 int j=i; while(j<end-1){ if(A[j]<root) return false; j++; } boolean L=true; boolean R=true; if( i>0) L=SquenceOfBST( A, be,i); if(i<end-1) R=SquenceOfBST( A, i, end-i-1); //除去根节点 return (A&&B); }