【力扣】[热题 HOT100] 98.验证二叉搜索树
发布日期:2021-05-10 06:34:00 浏览次数:3 分类:技术文章

本文共 1035 字,大约阅读时间需要 3 分钟。

1.题目

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。

节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

链接:

2.思路分析

  • 递归
  • 因为是二叉树,所以想到的第一个方法就是递归
  • 先遍历找左子树中不符合的情况,在找右子树中不符合的情况
  • 这里采用的是一个边界值(LONG_MIN,LONG_MAX)
  • 每次递归的时候,更改边界值,对于超出边界值的节点,一定是不是二叉搜索树

3.代码展示

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode() : val(0), left(nullptr), right(nullptr) {} *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */class Solution {
public: bool func(TreeNode* root, long long lower, long long upper) {
if(root == nullptr){
return true; } if(root->val <= lower || root->val >= upper){
return false; } return func(root->left, lower, root->val) && func(root->right, root->val, upper); } bool isValidBST(TreeNode* root) {
return func(root, LONG_MIN, LONG_MAX); }};

转载地址:https://blog.csdn.net/weixin_43967449/article/details/115732750 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【力扣】[热题 HOT100] 101.对称二叉树
下一篇:【C++】智能指针详解及原理简单说明

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2023年12月06日 05时20分37秒