您的位置:首页 > 其它

判断整数序列是不是二元查找树的后序遍历结果

2012-03-08 16:57 357 查看
判断整数序列是不是二元查找树的后序遍历结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。

如果是返回true,否则返回false。

例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:

8

/ /

6 10

/ / / /

5 7 9 11

因此返回true。

如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。

思路:此题利用递归求解,若是前序遍历类似,中序遍历检查序列是不是有序

//coder:LEE

//20120308

#include<iostream>

#include<cassert>

using namespace std;

bool VerifySequence(int *A,int beg,int end)

{

assert(A!=NULL);

if(beg>=end)

return true;

int key=A[end];

int mid;

for (int i=beg;i<end;i++)

{

if (A[i]>key)

{

mid=i;

break;

}

}

for (int j=mid+1;j<end;j++)

{

if(A[j]<key)

return false;

}

return VerifySequence(A,beg,mid-1)&&VerifySequence(A,mid,end-1);

}

int main()

{

// int A[7]={5,7,6,9,11,10,8};

// int A[7]={7,4,6,5};

int A[7]={7};

cout<<VerifySequence(A,0,6);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐