//输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
//如果是返回true,否则返回false。
//例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
// 8
// / \
// 6 10
// / \ / \
// 5 7 9 11
//因此返回true。
#include <iostream>
using std::cout;
using std::endl;
bool is_binary_tree_result(int* arr,int size)
{
if(size<=1)
return true;
int mid=-1;
for(int i=0;i<size-1;++i)
{
if(mid==-1)
{
if(arr[size-1]<arr[i])
mid=i;
continue;
}
else
{
if(arr[i]<arr[size-1])
return false;
}
}
return is_binary_tree_result(arr,mid) && is_binary_tree_result(arr+mid,size-mid-1);
}
int main(int argc,char* argv[])
{
int arr0[]={5,7,6,9,11,10,8};
int arr1[]={7,4,6,5};
cout<<is_binary_tree_result(arr0,sizeof(arr0)/sizeof(int))<<endl;
cout<<is_binary_tree_result(arr1,sizeof(arr1)/sizeof(int))<<endl;
system("PAUSE");
return 0;
}