博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode]Validate Binary Search Tree @ Python
阅读量:6917 次
发布时间:2019-06-27

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

原题地址:https://oj.leetcode.com/problems/validate-binary-search-tree/

题意:检测一颗二叉树是否是二叉查找树。

解题思路:看到二叉树我们首先想到需要进行递归来解决问题。这道题递归的比较巧妙。让我们来看下面一棵树:

                  4

                 /    \

                 2   6

                /    \   /   \

                1      3 5    7

     对于这棵树而言,怎样进行递归呢?root.left这棵树的所有节点值都小于root,root.right这棵树的所有节点值都大于root。然后依次递归下去就可以了。例如:如果这棵树是二叉查找树,那么左子树的节点值一定处于(负无穷,4)这个范围内,右子树的节点值一定处于(4,正无穷)这个范围内。思路到这一步,程序就不难写了。

代码:

# Definition for a  binary tree node# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass 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)

 

转载地址:http://jpxcl.baihongyu.com/

你可能感兴趣的文章
jmeter用beanshell调用自己写的jar进行MD5加密
查看>>
调用系统相机相冊
查看>>
最简单的视音频播放演示样例7:SDL2播放RGB/YUV
查看>>
vector draw 试用期结束的 激活方法
查看>>
Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel
查看>>
docker官方文档中的dns,link,expose,publish
查看>>
使用 redis “捕捉” “用户登录过期” 事件
查看>>
MyEclipse 8.5安装Aptana
查看>>
C#动态对象(dynamic)示例(实现方法和属性的动态)
查看>>
Objective-C之成魔之路【8-訪问成员变量和属性】
查看>>
支付宝支付-常用支付API详解(查询、退款、提现等)
查看>>
windows下查看特定端口被什么程序占用
查看>>
JSON.parse()与JSON.stringify()的区别
查看>>
1032. Sharing (25)
查看>>
JSP的隐藏对象
查看>>
2014秋C++ 第8周项目 分支程序设计
查看>>
[pig] pig 基础使用
查看>>
java中的线程同步
查看>>
Does the parameter type of the setter match the return type of the getter?
查看>>
MongoDB count distinct group by JavaAPI查询
查看>>