1、题目
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
例如输入数组{5,7,6,9,11,10,8},则返回true,因为这个数组是图1二叉搜索树的后序遍历。
图1、后序遍历序列对应的二叉搜索树
2、分析思路
由于在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分成两部分:第一部分是左子树结点的值,它们都比根结点的值小;第二部分是右子树结点的值,它们都比根结点的值大。
这样我们可以采用递归的思路来判断左右子树是否符合条件。
3、参考代码
//判断某一个数组是否二叉搜索树的后序遍历
bool Verify(int *data,int length)
{
if(data == NULL || length<=0)
return;
int root=data[length-1];//根结点
int i=0;
for(;i<length;i+&#