1 题目描述
题目链接:验证二叉搜索树
2 题目解析
搜索二叉树的特点就是, 中序遍历之后的值是有序的。
- 根据这个性质,可以对树进行中序遍历,将遍历的结果存入到vector中
- 最后判断vector中的值的顺序。如果是从小到大有序的,就是搜索二叉树;否则不是。
3 代码
class Solution {
public:
bool isValidBST(TreeNode* root) {
vector<int> res;
Inorder(res, root);
//判断中序遍历的结果是否有序
for (int i = 0; i < res.size() - 1; ++ i)
{
if (res[i + 1] <= res[i])
return false;
}
return true;
}
//中序遍历
void Inorder(vector<int>& res, TreeNode* root)
{
if (root == nullptr)
return;
Inorder(res, root->left);
res.push_back(root->val);
Inorder(res, root->right);
}
//直接中序遍历,如果不是正确的,就返回false
};