题解 | #判断是不是二叉搜索树#

判断是不是二叉搜索树

http://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b

```# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @return bool布尔型
#
'''
“”“
区间+递归
”“”
class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        return self.dfs(root, float('-inf'), float('inf'))
        
    def dfs(self,root,l,r):
        if not root:
            return True
        if root.val<l or root.val>r:
            return False
        return self.dfs(root.left,l,root.val) and self.dfs(root.right,root.val,r)
'''
"""
中序遍历
"""
class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        res=[]
        def zhongxu(root):
            if root is None:
                return None
            if root.left is not None:
                zhongxu(root.left)
            res.append(root.val)
            if root.right is  not None:
                zhongxu(root.right)
        zhongxu(root)
        for i in range(1,len(res)):
            #print(res[i-1])
            if res[i]<res[i-1]:
                return False
        return True
##### 区间递归的方式,思路上是这样的:首先对于root.val来说,其对应的初始区间为(-inf,inf),
		那么根据题意root.left.val区间为(-inf,root.val),同理root.right.val的区间为(root.val,inf)
		这样就一定能满足root.left.val<root.val<root.right.val,对每一个节点这么递归,最后取&即可。
		中序遍历的思路也很清晰,就是遍历之后的数组一定是一个严格单点递增的数组,for 循环一下就解决了。
全部评论

相关推荐

3 1 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1153274次浏览 17159人参与
# 通信和硬件还有转码的必要吗 #
11245次浏览 101人参与
# OPPO开奖 #
19365次浏览 268人参与
# 和牛牛一起刷题打卡 #
19137次浏览 1636人参与
# 实习与准备秋招该如何平衡 #
203554次浏览 3629人参与
# 大厂无回复,继续等待还是奔赴小厂 #
5033次浏览 33人参与
# 不去互联网可以去金融科技 #
20860次浏览 259人参与
# 通信硬件薪资爆料 #
266102次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2236次浏览 34人参与
# 互联网公司评价 #
97773次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25041次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454996次浏览 5125人参与
# 国企和大厂硬件兄弟怎么选? #
53932次浏览 1013人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14649次浏览 349人参与
# 硬件人的简历怎么写 #
82299次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19415次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28610次浏览 249人参与
# 学历对求职的影响 #
161294次浏览 1804人参与
# 你收到了团子的OC了吗 #
538911次浏览 6390人参与
# 你已经投递多少份简历了 #
344360次浏览 4963人参与
# 实习生应该准时下班吗 #
97042次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63530次浏览 622人参与
牛客网
牛客企业服务