输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。
代码:
package offer;
public class ti33 {
static boolean VerifyTree(int nums[],int start,int length)
{
if(start>=length)
{
return true;
}
int root = nums[length-1];
int i = start;
for(;i<length-1;i++)
{
if(nums[i]>root)
{
break;
}
}
int j = i;
for(;j<length;j++)
{
if(nums[j]<root)
{
return false;
}
}
boolean left = true;
if(i>start)
{
left = VerifyTree(nums,start,i-1);
}
boolean right = true;
if(i<length)
{
right = VerifyTree(nums,i,length-1);
}
return left&&right;
}
public static void main(String[] args)
{
int nums[] = {5,7,6,9,11,10,9,8};
if(nums.length<=0)
{
System.out.println(false);
}
System.out.println(VerifyTree(nums,0,nums.length));
}
}