您的位置:首页 > 其它

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

2011-06-30 12:19 232 查看
二元查找树后续遍历特点:

最后一个元素,将数组从[0...N-2]划分为两部分,前一部分所有元素比最后这个元素要小,后面的所有元素比这个元素都要大,利用递归不难写出code

/*
* Copyright (c) 2011 alexingcool. All Rights Reserved.
*/
#include <iostream>

using namespace std;

int array[] = {5, 7, 6, 9, 11, 10, 8};
const int size = sizeof array / sizeof *array;

bool isPostOrder(int (&array)[size], int start, int end)
{
if(start >= end)
return true;

int pivot = array[end];
int i = start, j = end - 1;

while(i <= end - 1 && array[i] <= pivot)
i++;
while(j > 0 && array[j] >= pivot)
j--;

if(i != j + 1)
return false;
else
return isPostOrder(array, start, j) && isPostOrder(array, i, end - 1);
}

void main()
{
if(isPostOrder(array, 0 ,size - 1))
cout << "is post order" << endl;
else
cout << "not post order" << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐