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

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

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

输入:
2
/
1 3
输出: true
示例 2:

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

func isValidBST(root *TreeNode) bool {return helper(root, math.MinInt64, math.MaxInt64)
}func helper(root *TreeNode, lower, upper int) bool {if root == nil {return true}if root.Val <= lower || root.Val >= upper {return false}return helper(root.Left, lower, root.Val) && helper(root.Right, root.Val, upper)
}//先进栈在不断弹栈
func isValidBST(root *TreeNode) bool {stack := []*TreeNode{}//inorder  是一个最小数inorder := math.MinInt64for len(stack) > 0 || root != nil {for root != nil {stack = append(stack, root)root = root.Left}//取栈顶的元素root = stack[len(stack)-1]//弹栈stack = stack[:len(stack)-1]if root.Val <= inorder {return false}inorder = root.Valroot = root.Right}return true
}

算法:验证二叉搜索树相关推荐

  1. LeetCode 之 JavaScript 解答第98题 —— 验证二叉搜索树(Validate Binary Search Tree)

    Time:2019/4/24 Title: Vaildata Binary Search Tree Difficulty: Medium Author: 小鹿 题目:Vaildata Binary S ...

  2. [CareerCup] 4.5 Validate Binary Search Tree 验证二叉搜索树

    4.5 Implement a function to check if a binary tree is a binary search tree. LeetCode上的原题,请参见我之前的博客Va ...

  3. 看动画学算法之:二叉搜索树BST

    文章目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 看动画学算法之:二叉搜索树BST 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的 ...

  4. [Leedcode][JAVA][第98题][验证二叉搜索树]

    [问题描述][第98题][验证二叉搜索树][中等] 给定一个二叉树,判断其是否是一个有效的二叉搜索树.假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节 ...

  5. 【LeetCode】【HOT】98. 验证二叉搜索树(递归)

    [LeetCode][HOT]98. 验证二叉搜索树 文章目录 [LeetCode][HOT]98. 验证二叉搜索树 package hot;class TreeNode{int val;TreeNo ...

  6. 力扣 验证二叉搜索树

    力扣 验证二叉搜索树 题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数. 节点的右子树只包含 大于 ...

  7. 20190914:(leetcode习题)验证二叉搜索树

    验证二叉搜索树 题目 大致思路 代码实现 题目 大致思路 直接利用中序遍历的代码进行修改,将中序遍历按顺序存放入数组,按照中序的特点和二叉搜索树的特点,得到的数组应该是有序的,并且是升序的.最后进行判 ...

  8. 020.验证二叉搜索树

    题目链接: 98. 验证二叉搜索树 大概思路: 题目要求: 判断给的二叉树是不是二叉搜索树. 二叉搜索树的特征: 节点的左子树所有节点的值均小于该节点的值,右节点反之,同时对搜索树的每一个节点都适用此 ...

  9. 《数据结构与算法之二叉搜索树(Java实现)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...

  10. leetcode98验证二叉搜索树刷题打卡

    98. 验证二叉搜索树 题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数. 节点的右子树只包含 大于 ...

最新文章

  1. Java IDEA Debug进制二维数组
  2. bzoj 3743 [Coci2015]Kamp——树形dp+换根
  3. html标题标签最大值是多少,css – 样式HTML5进度标记,达到了它的最大值
  4. python考试pass or fail_python-pytest学习(十二)-标记失败xfail
  5. 停止Java线程,小心interrupt()方法
  6. [bzoj1036][ZJOI2008]树的统计Count
  7. CentOS 7 搭建GlusterFS
  8. Leetcode 413.等差数列划分
  9. springboot整合quartz定时任务
  10. 下载并安装 J2SDK以及运行第一个java程序
  11. 为什么大龄程序员不能去创业?网友:看完这四个原因你就懂了
  12. [Sencha ExtJS amp; Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)...
  13. “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
  14. 《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录
  15. python tkinter控件treeview的数据列表显示的实现_code
  16. linux boot分区创建,Linux 更换 Boot分区 磁盘 示例
  17. 学校计算机用房地面用什么材料,学校食堂地面防滑该用什么材料?
  18. java中JAO,Java
  19. 芒德布罗集matlab程序,分形、噪声和状态变量
  20. AI词典笔赛跑下,科大讯飞的技术流超车

热门文章

  1. 【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )
  2. 【组合数学】组合数学简介 ( 组合数学脉络 | 组合数学技巧 | 组合思想 1 : 一一对应 )
  3. 【Android 高性能音频】AAudio 状态机 ( 创建 | 打开 Open | 开始 Started | 暂停 Paused | 刷写 Flushed | 停止 Stopped | 关闭 )
  4. 【翻译】停止学习框架(Stop Learning Frameworks)
  5. node经验总结(一)
  6. java基础:任意进制到十进制的转换
  7. 判断两个数组内容是否相同
  8. Linux下用来获取各种系统信息的C++类
  9. c#/.net 循序渐进理解-委托
  10. GridView跨行合并单元格