98. 验证二叉搜索树

题目描述

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

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

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:

输入:

    2
   / \
  1   3

输出: true
示例 2:

输入:

    5
   / \
  1   4
     / \
    3   6

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

知识点

二叉树、递归


Qiang的思路

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isValidBST(self, root: TreeNode, min=None, max=None) -> bool:
        if root==None:
            return True
        if max!=None:
            if root.val>=max:
                return False
        if min!=None:
            if root.val<=min:
                return False
        return self.isValidBST(root.left, min, root.val) and self.isValidBST(root.right, root.val, max)

作者原创,如需转载及其他问题请邮箱联系:[email protected]
个人网站:https://www.myqiang.top。

你可能感兴趣的:(98. 验证二叉搜索树)