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

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

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

示例 1:

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

示例 2:

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

class Solution {
public:
bool isValidBST(TreeNode* root)
{
if(root == NULL)
return true;
if(!CheckLeft(root ->val, root ->left))
return false;
if(!CheckRight(root ->val, root ->right))
return false;
return isValidBST(root ->left) && isValidBST(root ->right);
} bool CheckLeft(int val, TreeNode* root)
{
if(root == NULL)
return true;
if(root ->val >= val)
return false;
return CheckLeft(val, root ->left) && CheckLeft(val, root ->right);
} bool CheckRight(int val, TreeNode* root)
{
if(root == NULL)
return true;
if(root ->val <= val)
return false;
return CheckRight(val, root ->left) && CheckRight(val, root ->right);
}
};

最新文章

  1. 1.C#面向对象基础简介
  2. Unity3D 动态改变地形
  3. nodejs,node原生服务器搭建实例
  4. js中对类和对象的理解
  5. JsRender实用教程(tag else使用、循环嵌套访问父级数据)
  6. fzuoj Problem 2179 chriswho
  7. Java中的内部类与匿名内部类总结
  8. 九、Socket之TCP编程
  9. MVC应用程序请求密码的功能(二)
  10. .net core 14
  11. 实用 .htaccess 用法大全
  12. c#结构体、打他table、excel、csv互转
  13. 一、Git简介
  14. C#版本与Framework的关系
  15. 使用 OpenSessionInViewFilter 配置加载
  16. vue extend 的基本使用
  17. 再谈C#委托与事件
  18. Java异常的优势与缺陷,及其处理原则
  19. Git 查询某次历史提交的修改内容
  20. swift的异常处理:本质是错误信息的传递方式

热门文章

  1. 一个很笨的方法,写脚本来实现自动调dmp,找有用的数据
  2. webpack 简单笔记(一)
  3. jsp 引入js、css修改后有缓存不及时更新
  4. Linux操作系统系列-Linux基础
  5. 注解@Qualifier@Primary
  6. 【CF622F】The Sum of the k-th Powers (拉格朗日插值法)
  7. loj6094 归乡迷途
  8. iframe跨域数据传递
  9. PAT甲级——1072 Gas Station
  10. Ionic 列表、文本 自动 换行