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

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

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

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

节点的左子树只包含小于当前节点的数。

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

 

 示例 2:

 

 

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

1 # Definition for a binary tree node. 2 # class TreeNode: 3 #     def __init__(self, x): 4 #         self.val = x 5 #         self.left = None 6 #         self.right = None 7  8 class Solution: 9     def isValidBST(self, root: TreeNode) -> bool:10         res_ = []11         stack = []12         while root or stack:13             if root:14                 stack.append(root)15                 root = root.left16             else:17                 root = stack.pop()18                 res_.append(root.val)19                 root = root.right20         stack=res_.copy()21         stack.sort()22         if len(set(stack)) != len(stack):23             return False24         return  stack== res_25         26
执行用时 :68 ms, 在所有 Python3 提交中击败了73.22%的用户
内存消耗 :16.8 MB, 在所有 Python3 提交中击败了7.23%的用户
 
每次将当前值和上下界进行比较,递归对其左右子树进行该过程:
1 class Solution: 2     def isValidBST(self, root): 3         """ 4         :type root: TreeNode 5         :rtype: bool 6         """ 7         def helper(node, lower = float('-inf'), upper = float('inf')): 8             if not node: 9                 return True10             11             val = node.val12             if val <= lower or val >= upper:13                 return False14 15             if not helper(node.right, val, upper):16                 return False17             if not helper(node.left, lower, val):18                 return False19             return True20 21         return helper(root)
执行用时 :76 ms, 在所有 Python3 提交中击败了42.48%的用户
内存消耗 :16.2 MB, 在所有 Python3 提交中击败了39.06%的用
 

转载于:https://www.cnblogs.com/NPC-assange/p/11489733.html

你可能感兴趣的文章
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
关于indexOf的使用
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>