用C++编写代码,试设计一个判别给定二叉树是否为二叉排序树的算法。
时间: 2024-06-13 09:09:22 浏览: 144
写一算法,判断一棵二叉树是否是一棵二叉排序树。
以下是用C++编写的判别给定二叉树是否为二叉排序树的算法:
```cpp
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL),(NULL) {}
};
bool isValidBST(TreeNode* root) {
return isValidBST(root, LONG_MIN, LONG_MAX);
}
bool isValidBST(TreeNode* root, long long lower, long long upper) {
if (root == NULL) {
return true;
}
if (root->val <= lower || root->val >= upper) {
return false;
}
return isValidBST(root->left, lower, root->val) && isValidBST(root->right, root->val, upper);
}
```
阅读全文