c++ 验证二叉搜索树
时间: 2023-07-23 10:10:33 浏览: 146
要验证一个二叉树是否为二叉搜索树,可以使用中序遍历。中序遍历二叉搜索树时,得到的元素序列是升序排列的,因此可以在遍历时检查当前结点的值是否大于前一个结点的值。
以下是一段 C++ 代码,实现了验证一个二叉树是否为二叉搜索树的功能:
```cpp
class Solution {
public:
bool isValidBST(TreeNode* root) {
long long pre = LLONG_MIN; // 使用 long long 类型可以避免 int 类型的边界问题
return inorderTraversal(root, pre);
}
private:
bool inorderTraversal(TreeNode* root, long long& pre) {
if (!root) {
return true;
}
if (!inorderTraversal(root->left, pre)) {
return false;
}
if (root->val <= pre) {
return false;
}
pre = root->val;
return inorderTraversal(root->right, pre);
}
};
```
其中,isValidBST 函数接收一个 TreeNode 指针,表示要验证的二叉树的根节点。函数返回一个布尔值,表示该二叉树是否为二叉搜索树。
inorderTraversal 函数执行中序遍历,并检查当前结点的值是否大于前一个结点的值。函数返回一个布尔值,表示该子树是否为二叉搜索树。pre 参数是一个引用,表示前一个结点的值。
阅读全文