leetcode -- Validate Binary Search Tree -- 重点
2015-12-16 22:48
369 查看
https://leetcode.com/problems/validate-binary-search-tree/
二叉树的问题,要想到递归。这里容易想到的就是如果左右子树都存在,只要
但其实不对,看case [10,5,15,null,null,6,20]。这里root 10的right subtree 也是valid的,但是其中6是小于10的。所以这种思路不对。
这里参考/article/4982538.html。
有如下代码, 很巧妙
这段code 的最大值最小值不应是2147483647 和-2147483648。应该选稍微小一点的下界和稍微大一点的上界,否则[2147483647]这个case过不了,为了方便可以取10**10>2147483647和-10**1<-2147483648,
参考http://chaoren.is-programmer.com/posts/42736.html
二叉树的问题,要想到递归。这里容易想到的就是如果左右子树都存在,只要
if root.left.val < root.val < root.right.val: return self.isValidBST(root.left) and self.isValidBST(root.right)
但其实不对,看case [10,5,15,null,null,6,20]。这里root 10的right subtree 也是valid的,但是其中6是小于10的。所以这种思路不对。
这里参考/article/4982538.html。
有如下代码, 很巧妙
这段code 的最大值最小值不应是2147483647 和-2147483648。应该选稍微小一点的下界和稍微大一点的上界,否则[2147483647]这个case过不了,为了方便可以取10**10>2147483647和-10**1<-2147483648,
参考http://chaoren.is-programmer.com/posts/42736.html
class Solution: # @param root, a tree node # @return a boolean def ValidBST(self, root, min, max): if root == None: return True if root.val <= min or root.val >= max: return False return self.ValidBST(root.left, min, root.val) and self.ValidBST(root.right, root.val, max) def isValidBST(self, root): return self.ValidBST(root, -2147483648, 2147483647) #return self.ValidBST(root, -10**10, 10**10)
相关文章推荐
- 数据结构上机4队列-杨辉三角2
- 如何在VS 2010中使用 VS2013的解决方案
- 带滑动条的导航栏(下)---修复浏览器变窄后导航栏变成两条的BUG
- 记一次表误删除的调查和恢复
- 数据结构上机4队列-杨辉三角1
- 一起talk C栗子吧(第七十六回:C语言实例--DIY cat命令)
- 大学生活感悟
- 【jQuery】:eq(index)过滤选择器
- 关于Quartz Core
- 数据结构上机3栈-括号匹配
- extract()函数的妙用
- 【android_温故知新】android 的事件处理
- 操作系统学习笔记:I/O输入系统
- 柔性数组成员
- Github教程(2)
- 数据结构上机2单链表合并 非递减
- 操作系统学习笔记:I/O输入系统
- 文章标题
- Android探究--使用ViewHolder提高ListView效率
- excel TEXT 函数