c语言编程【问题描述】输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 【输入形式】输入任意长度的数组,数字之间空格分开 【输出形式】true 或者 false 【样例输入】输入5 7 6 9 11 10 8 【样例输出】true 【样例说明】由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回true。
时间: 2023-12-31 16:06:37 浏览: 82
以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool verifySequenceOfBST(int sequence[], int length) {
if (sequence == NULL || length <= 0) {
return false;
}
int root = sequence[length - 1];
int i = 0;
for (; i < length - 1; i++) {
if (sequence[i] > root) {
break;
}
}
int j = i;
for (; j < length - 1; j++) {
if (sequence[j] < root) {
return false;
}
}
bool left = true;
if (i > 0) {
left = verifySequenceOfBST(sequence, i);
}
bool right = true;
if (i < length - 1) {
right = verifySequenceOfBST(sequence + i, length - i - 1);
}
return left && right;
}
int main() {
int sequence[] = {5, 7, 6, 9, 11, 10, 8};
int length = sizeof(sequence) / sizeof(sequence[0]);
bool result = verifySequenceOfBST(sequence, length);
if (result) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}
```
运行结果:
```
true
```
阅读全文