用c/c++的语言写出递归的方法
时间: 2024-02-13 17:07:27 浏览: 24
好的,以下是用C++语言实现的递归方法:
```cpp
#include<iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
bool isValidBST(TreeNode* root) {
return helper(root, LONG_MIN, LONG_MAX);
}
bool helper(TreeNode* node, long lower, long upper) {
if(!node)
return true;
if(node->val <= lower || node->val >= upper)
return false;
return helper(node->left, lower, node->val) && helper(node->right, node->val, upper);
}
};
int main() {
TreeNode *root = new TreeNode(5);
root->left = new TreeNode(1);
root->right = new TreeNode(4);
root->right->left = new TreeNode(3);
root->right->right = new TreeNode(6);
Solution solution;
bool result = solution.isValidBST(root);
cout << result << endl;
return 0;
}
```
其中,helper函数用来递归实现二叉排序树的判断,lower和upper用来表示当前节点的值应该在哪个区间内。在判断过程中,如果当前节点的值不符合区间要求,则返回False。如果左右子树中有任意一个不是二叉排序树,则返回False。最终,如果所有节点都符合要求,则返回True。在主函数中,我们构造了一个二叉树并进行了判断。