判断整数序列是不是二元查找树的后序遍历结果
2018-01-02 16:39
260 查看
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
8
/ \
6 10
/ \ / \
5 7 9 11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
思路:后续遍历最后一个节点就是根节点,左子树的数全部比他小,右子树的数字全部比他大。违反这个规则就是错的。
#pragma warning(disable:4996)
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define N 100
int tree
;
bool Check(int l, int r)
{
if (l >= r) return true;
int midL = l;
while (midL < r && tree[midL] < tree[r]) ++midL;
int midR = midL-1;
while (midL < r && tree[midL] > tree[r]) ++midL;
if (midL != r) return false;
return Check(l, midR) && Check(midR + 1, r - 1); //这里是r-1,把根节点排除
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &tree[i]);
printf("%s", Check(0, n - 1) ? "true" : "false");
}
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
8
/ \
6 10
/ \ / \
5 7 9 11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
思路:后续遍历最后一个节点就是根节点,左子树的数全部比他小,右子树的数字全部比他大。违反这个规则就是错的。
#pragma warning(disable:4996)
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define N 100
int tree
;
bool Check(int l, int r)
{
if (l >= r) return true;
int midL = l;
while (midL < r && tree[midL] < tree[r]) ++midL;
int midR = midL-1;
while (midL < r && tree[midL] > tree[r]) ++midL;
if (midL != r) return false;
return Check(l, midR) && Check(midR + 1, r - 1); //这里是r-1,把根节点排除
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &tree[i]);
printf("%s", Check(0, n - 1) ? "true" : "false");
}
相关文章推荐
- 判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试100题之六,判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题精选(06)-判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题精选100题(06)-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 100题_06 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 第9 题 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 面试题---判断整数序列是不是二元查找树的后序遍历结果
- flag5判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题精选100题(06)-判断整数序列是不是二元查找树的后序遍历结果
- 9. 判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题精选100题(06)-判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9、判断整数序列是不是二元查找树的后序遍历结果