用c语言判断整数序列是否为二元查找树的后序遍历
时间: 2023-07-15 16:13:21 浏览: 114
二元查找树的后序遍历特点是:序列最后一个元素为根节点,且序列可以划分为两部分,前半部分小于根节点,后半部分大于根节点。
以下是用 C 语言实现的判断方法:
```c
#include <stdio.h>
#include <stdbool.h>
bool isBST(int arr[], int start, int end) {
if (start >= end) {
return true;
}
int root = arr[end]; // 序列最后一个元素为根节点
int i;
for (i = start; i < end; i++) {
if (arr[i] > root) {
break;
}
}
int j;
for (j = i; j < end; j++) {
if (arr[j] < root) {
return false;
}
}
bool left = isBST(arr, start, i - 1); // 递归判断左子树
bool right = isBST(arr, i, end - 1); // 递归判断右子树
return left && right;
}
int main() {
int arr[] = {2, 4, 3, 6, 8, 7, 5};
int n = sizeof(arr) / sizeof(arr[0]);
bool result = isBST(arr, 0, n - 1);
printf("%s", result ? "true" : "false");
return 0;
}
```
在上面的代码中,`isBST` 函数用于判断给定的数组 `arr` 是否为二元查找树的后序遍历。函数接收三个参数:数组 `arr`,序列起点下标 `start` 和序列终点下标 `end`。函数首先判断序列是否为空或只有一个元素,如果是,则返回 `true`。然后,函数将序列最后一个元素作为根节点,并根据根节点将序列分为两部分,前半部分小于根节点,后半部分大于根节点。接着,函数使用递归判断左子树和右子树是否分别为二元查找树的后序遍历。如果左子树和右子树都是二元查找树的后序遍历,则整个序列就是二元查找树的后序遍历。
在 `main` 函数中,我们用一个示例数组调用 `isBST` 函数,并打印判断结果。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)