博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - 验证二叉搜索树
阅读量:5008 次
发布时间:2019-06-12

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

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

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

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

示例 1:

输入:    2   / \  1   3输出: true

示例 2:

输入:    5   / \  1   4     / \    3   6输出: false解释: 输入为: [5,1,4,null,null,3,6]。     根节点的值为 5 ,但是其右子节点值为 4 。

解法:
1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     bool isValidBST(TreeNode* root) {13         return validateRange(root, INT32_MIN, INT32_MAX);14     }15 private:16     bool validateRange(TreeNode* root, int min, int max)17     {18         if (root == nullptr)19             return true;20     21         if (root->val == INT32_MIN && root->left != nullptr)22             return false;23     24         if (root->val == INT32_MAX && root->right != nullptr)25             return false;26     27         if (root->val < min || root->val > max)28             return false;29     30         bool leftFlag  = validateRange(root->left, min, root->val-1);31         bool rightFlag = validateRange(root->right, root->val+1, max);32     33         return leftFlag && rightFlag;34     }35 };
 

 

 

转载于:https://www.cnblogs.com/gradyblog/p/8945151.html

你可能感兴趣的文章
织梦DEDE多选项筛选_联动筛选功能的实现_二次开发
查看>>
iOS关于RunLoop和Timer
查看>>
SQL处理层次型数据的策略对比:Adjacency list vs. nested sets: MySQL【转载】
查看>>
已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
查看>>
MySQL的随机数函数rand()的使用技巧
查看>>
thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误
查看>>
python字符串实战
查看>>
wyh的物品(二分)
查看>>
UNIX网络编程
查看>>
修改页面select <s:if------/>判断
查看>>
3. fooView rxjava + rxandroid + retrofit 安卓开发框架搭配 az kj
查看>>
项目启动及绩效评估
查看>>
SSM-Spring-08:Spring的静态代理初窥案例
查看>>
基于 Jenkins 快速搭建持续集成环境
查看>>
华为云.NET Core支持情况调查
查看>>
集合已修改;可能无法执行枚举操作
查看>>
javascript变量及命名规范
查看>>
如何让pl/sql developer记住密码,实现快速登录
查看>>
如何利用微软本身的库做个数据库客户端的配置
查看>>
【当前工作感受系列】
查看>>