一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。C语言
时间: 2023-06-09 19:08:47 浏览: 85
我可以给您提供一个判断二叉搜索树是否有效的C语言实现:
```c
#include <limits.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool isValidBST(struct TreeNode* root) {
return isValidBSTHelper(root, LONG_MIN, LONG_MAX);
}
bool isValidBSTHelper(struct TreeNode* root, long min, long max) {
if (root == NULL) {
return true;
}
if (root->val <= min || root->val >= max) {
return false;
}
return isValidBSTHelper(root->left, min, root->val) && isValidBSTHelper(root->right, root->val, max);
}
```
这个函数将会返回一个布尔值,表示二叉树是否是有效的二叉搜索树。它使用了一个辅助函数 `isValidBSTHelper` 来递归地检查每个节点是否在合适的范围内。我们通过将节点的值与 `min` 和 `max` 的值进行比较来检查节点是否在合适的范围内。如果满足要求,就继续递归检查左右子树。如果任意一个子树不符合要求,就返回 `false`。如果整个树都符合要求,就返回 `true`。
阅读全文