二叉搜索树的后序遍历序列:判断数组是不是某二叉搜索树的后序遍历结果
#include<stdio.h>
int isTreeOrder(int *A, int len) {
if (A == NULL || len <= 0)
return 0;
int root = A[len - 1];
int i;
for (i = 0; i < len; i++) { //左子树都小于根结点
if (A[i] >= root)
break;
}
int j ;
for (j=i; j < len; j++) { //右子树都大于根结点
if (A[j] < root)
return 0;
}
int left = 1;
if (i > 0) {
left = isTreeOrder(A, i);
}
int right = 1;
if (i<len-1 ) {
right = isTreeOrder(A+i,len-i-1);
}
return left&&right;
}
int main() {
int A[] = {7,4,5,6};
int len = sizeof(A) / sizeof(A[0]);
int istrue=isTreeOrder(A, len);
}