zoukankan      html  css  js  c++  java
  • leetcode_98. 验证二叉搜索树

    给定一个二叉树,判断其是否是一个有效的二叉搜索树。
    
    假设一个二叉搜索树具有如下特征:
    
    节点的左子树只包含小于当前节点的数。
    节点的右子树只包含大于当前节点的数。
    所有左子树和右子树自身必须也是二叉搜索树。
    示例 1:
    
    输入:
        2
       / 
      1   3
    输出: true
    示例 2:
    
    输入:
        5
       / 
      1   4
         / 
        3   6
    输出: false
    解释: 输入为: [5,1,4,null,null,3,6]。
         根节点的值为 5 ,但是其右子节点值为 4 。
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/validate-binary-search-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    #递归
    import sys
    class Solution:
        def isValidBST(self, root: TreeNode) -> bool:
            max_num=sys.maxsize
            min_num=-sys.maxsize-1
    
            def helper(root:TreeNode,minval,maxval)->bool:
                if not root:
                    return True
                if root.val>=maxval or root.val<=minval:
                    return False
                return helper(root.left,minval,root.val) and helper(root.right,root.val,maxval)
    
            return helper(root,min_num,max_num)
    
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    import sys
    class Solution:
        prew=-sys.maxsize-1
        def isValidBST(self, root: TreeNode) -> bool:
            if(root==None):
                return True
            if not self.isValidBST(root.left):#左子树
                return False
            if self.prew>=root.val:
                return False
            self.prew=root.val
            if not self.isValidBST(root.right):#右子树
                return False
            return True
    
  • 相关阅读:
    Object.defineProperty方法 使用
    Linux常用命令--网终设置
    Linux常用命令--文件操作、权限设置
    Linux常用命令
    vue之双绑实现
    【Objective-C学习记录】第二十九天
    【Objective-C学习记录】第二十八天
    【Objective-C学习记录】第二十四天
    【Objective-C学习记录】第二十三天
    【Objective-C学习记录】第二十二天
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/14153618.html
Copyright © 2011-2022 走看看