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

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

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

示例 2:

低级做法,中序遍历,看看是否是有序的

 # Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution:
def isValidBST(self, root: TreeNode) -> bool:
res_ = []
stack = []
while root or stack:
if root:
stack.append(root)
root = root.left
else:
root = stack.pop()
res_.append(root.val)
root = root.right
stack=res_.copy()
stack.sort()
if len(set(stack)) != len(stack):
return False
return stack== res_
执行用时 :68 ms, 在所有 Python3 提交中击败了73.22%的用户
内存消耗 :16.8 MB, 在所有 Python3 提交中击败了7.23%的用户
 
每次将当前值和上下界进行比较,递归对其左右子树进行该过程:
 class Solution:
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def helper(node, lower = float('-inf'), upper = float('inf')):
if not node:
return True val = node.val
if val <= lower or val >= upper:
return False if not helper(node.right, val, upper):
return False
if not helper(node.left, lower, val):
return False
return True return helper(root)
执行用时 :76 ms, 在所有 Python3 提交中击败了42.48%的用户
内存消耗 :16.2 MB, 在所有 Python3 提交中击败了39.06%的用
 

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(7)-MVC与EasyUI DataGrid
  2. Linux学习之一--VI编辑器的基本使用
  3. js文件上传
  4. php curl get
  5. 性能测试报告的指标选择、数据选择和分析的参考【以Apache AB test为例】
  6. Couldn&#39;t resolve Mac Server &quot;mymac&quot;
  7. Android实战--短信发送器
  8. 我对序列化(Serializable)的理解
  9. shell脚本定时操作数据库
  10. matlab函数集锦
  11. java 注解Annotation
  12. C# 如何为应用程序加入多个图标?
  13. Rsync同步工具安装文档
  14. OpenGL蓝宝书第五章代码勘误以及惯性坐标系去解释模型变换:Pyramid.cpp
  15. 在VS中配置并测试opencv
  16. 关于php中的include html文件的问题,为什么html可以在php中执行
  17. SQL Android
  18. 如何检测或判断一个文件或字节流(无BOM)是什么编码类型
  19. Unity Remote 无法连接
  20. CentOS7安装redis数据库及php-redis扩展

热门文章

  1. 阶段3 1.Mybatis_11.Mybatis的缓存_8 mybatis的二级缓存
  2. 应用安全 - 工具 - NScan - 漏洞汇总
  3. Python中classmethod和staticmethod的区别
  4. SpringBoot中定时任务默认是串行执行 如何设置并行
  5. nrm安装与配置
  6. Requests的基本使用
  7. PC端微信防撤回功能分析
  8. 只使用非递归的mutex
  9. Javascript的是三种字符串连接方式
  10. 动态规划: HDU1003Max Sum