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

判断是不是二叉搜索树

https://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 dfs(self , root: TreeNode):
        # write code here
        leftb = rightb = True
        maxc = root.val
        maxleft = maxright = float("-inf")
        minc = root.val
        minleft = minright = float("inf")
        if root.left is not None:
            if root.left.val>root.val:
                return False, root.left.val, root.val
            leftb, maxleft, minleft = self.dfs(root.left)
            if maxleft>root.val:
                leftb = False
        if root.right is not None:
            if root.right.val<root.val:
                return False, root.val, root.right.val
            rightb,maxright,minright = self.dfs(root.right)
            if minright<root.val:
                rightb = False
        
        maxc = max(maxc,max(maxleft,maxright))
        minc = min(minc,min(minleft,minright))
        
        return (leftb and rightb),maxc,minc 

    def isValidBST(self , root: TreeNode) -> bool:
        # write code here
        res,maxc,minc = self.dfs(root)
        return res

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务