关键字:二叉搜索树
,后序
思路:左子树一定比父节点小,右子树一定比父节点大
/**
* 5
* 3 7
* 2 4 6 8
*
* 2 4 3 6 8 7 5
*/
static boolean check(int[] data ,int start, int end) {
if (data == null)
return false;
int i;
int root = data[end];
for (i = start;i<end;i++) {
if (data[i]>root)
break;
}
int j=i;
for (;j<end;j++) {
if (data[i]<root)
return false;
}
boolean left = true;
if (i<j && i>start+1){
left = check(data, start,i-1);
}
boolean right = true;
if (j == end && i != j) {
right = check(data,i,end-1);
}
return left && right;
}