标签:csharp div nbsp class har ++ return 包含 个数
描述:
输入一个整数数组,判断该数组是不是某二叉排序树的后序遍历结果。如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
输入说明:
包含多组数据,第一行是数据组数T,接下来有2T行,
每组数据有2行:
第一行为整数n,表示序列元素的个数,n小于100。
第二行为n个元素。
输出说明:
判断这个序列是不是某个二叉树的后序遍历序列,是输出“YES”,不是输出“NO”。
输入样例:
2
7
4 8 6 12 16 14 10
4
7 4 6 5
输出样例:
YES
NO
#include<stdio.h>
bool verifySequenceOfBST(int* sequence, int length)
{
int i;
int root = sequence[length - 1];
for (i = 0; i < length - 1; i++)
{
if (sequence[i] > root)
break;
}
int j = i;
for (j; j < length - 1; j++)
{
if (sequence[j] < root)
return false;
}
bool left = true;
if (i > 1)
left = verifySequenceOfBST(sequence, i);
bool right = true;
if (length - i - 1 > 1)
right = verifySequenceOfBST(sequence + i, length - i - 1);
return (left && right);
}
int main()
{
int A[100];
int t, n;
scanf("%d", &t);
for (int i = 0; i < t; i++)
{
scanf("%d", &n);
for (int j = 0; j < n; j++)
scanf("%d", &A[j]);
if (verifySequenceOfBST(A, n))
printf("TES\n");
else
printf("NO\n");
}
}
标签:csharp div nbsp class har ++ return 包含 个数
原文地址:https://www.cnblogs.com/KIROsola/p/11915263.html