c语言写 用bool作为返回值类型的,判断一个树是否为二叉排序树的代码 用递归的方法写
时间: 2024-12-20 15:21:28 浏览: 7
在C语言中,判断一个树是否为二叉排序树 (BST) 的递归算法通常会检查每个节点的值是否大于其左子树中的所有节点,并小于其右子树中的所有节点。以下是使用布尔类型 `bool` 返回值的递归函数示例:
```c
#include <stdbool.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool isValidBST(struct TreeNode* root) {
return isBSTHelper(root, INT_MIN, INT_MAX);
}
bool isBSTHelper(struct TreeNode* node, int min, int max) {
if (node == NULL) {
return true; // 空节点满足BST条件
}
if (node->val <= min || node->val >= max) {
return false; // 越出范围则不是BST
}
bool leftValid = node->val > min && isBSTHelper(node->left, min, node->val - 1);
bool rightValid = node->val < max && isBSTHelper(node->right, node->val + 1, max);
return leftValid && rightValid; // 如果左右子树都满足BST条件,则当前节点也满足
}
```
这个 `isValidBST` 函数调用了辅助函数 `isBSTHelper` 来递归检查树的结构。如果整个树都是按照非递减顺序排列的,那么该函数将返回 `true`,否则返回 `false`。
阅读全文