您的位置:首页 > 其它

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

2012-12-23 20:38 381 查看
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。

分析:

根据后序遍历的特点可知,最后一个元素会把前面的元素分成两部分,前一部分小于它,后一部分大于或等于它。如果满足这个条件同时左右两部分也有这个性质,则该序列是二元查找树后序遍历的结果。整个过程是一个递归过程。

对于一个长度小于等于2的序列,一定是某一二元查找树后序遍历的结果,返回true。

#include <iostream>
using namespace std;

bool isPostOrderOfBST(int* array, int len) {
if(len <= 2) return true;
int i = 0;
while(array[i] < array[len-1] && i < len-1) i++;
int j = i;
while(array[j] >= array[len-1] && j < len-1) j++;
if(j != len -1) {
return false;
}
return isPostOrderOfBST(array, j) && isPostOrderOfBST(array+j, len-j-1);
}

int main() {
int array[7] = {5, 7, 6, 9, 11, 10, 8};
cout << isPostOrderOfBST(array, 7) << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐