Skip to content

Latest commit

 

History

History
73 lines (51 loc) · 1.8 KB

98.验证二叉搜索树.md

File metadata and controls

73 lines (51 loc) · 1.8 KB

98.验证二叉搜索树

https://leetcode-cn.com/problems/validate-binary-search-tree/

难度:中等

题目:

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

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

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

节点的右子树只包含大于当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

示例:

示例 1:

输入:

    2
   / \
  1   3

输出: true

示例 2:

输入:

    5
   / \
  1   4
     / \
    3   6

输出: false

解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。

分析

由题目给出的信息我们可以知道:如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也为二叉搜索树。

解题:

class Solution:
    def isValidBST(self, root):
        def dfs(root,left,right):
            if not root:
                return True
            elif left < root.val <right:
                return dfs(root.left,left,root.val) and dfs(root.right,root.val,right)
            else:
                return False
        return dfs(root,float('-inf'),float('inf'))

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

有喜欢力扣刷题的小伙伴可以加我微信(King_Uranus)互相鼓励,共同进步,一起玩转超级码力!

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown