c++判断一棵树是否为二叉排序树给出一段代码
时间: 2024-01-20 21:41:26 浏览: 75
以下是一段判断一棵树是否为二叉排序树的代码,使用了递归方式实现。
```C++
#include<bits/stdc++.h>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
bool isValidBST(TreeNode* root)
{
return helper(root, LONG_MIN, LONG_MAX);
}
bool helper(TreeNode* root, long long minVal, long long maxVal)
{
if(root == NULL)
return true;
if(root->val >= maxVal || root->val <= minVal)
return false;
bool left = helper(root->left, minVal, root->val);
bool right = helper(root->right, root->val, maxVal);
return left && right;
}
```
其中,isValidBST 函数为主函数,接收一颗二叉搜索树的根节点,返回一个 bool 值,表示该树是否为二叉排序树。helper 函数为递归函数,每次对当前节点的值进行判断,然后分别对左右子树进行递归判断,最后返回左右子树的结果的逻辑与。同时,为了应对树中有 INT_MIN, INT_MAX 的情况,使用了 long long 类型的极大值和极小值来做上下界。
阅读全文