LeetCode0098.验证二叉搜索树[Medium][Python][BinaryTree]ProblemLeetCode给定一棵二叉树,确定它是否是有效的二叉搜索树(BST)。定义如下:节点的左子树仅包含键小于节点键的节点。节点的右子树仅包含键大于节点键的节点。左右子树也必须是二叉搜索树。例1:2/\13输入:[2,1,3]输出:true例2:5/\14/\36输入:[5,1,4,null,null,3,6]输出:false解释:根节点的值为5,但其右子节点的值为4。问题给定一棵二叉树,确定它是否是一棵有效的二叉搜索树。假设一棵二叉搜索树具有以下特点:节点的左子树只包含小于当前节点的数字。节点的右子树仅包含大于当前节点的数字。所有的左子树和右子树本身必须是二叉搜索树。示例1:输入:2/\13输出:true示例2:输入:5/\14/\36输出:false解释:输入为:[5,1,4,null,null,3,6].根节点的值为5,但其右子节点的值为4。思路二叉树的根不仅要和左右子节点比较,还要和整个左右子树的所有节点比较。Python3代码#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defisValidBST(self,root:TreeNode)->bool:returnself.isValid(root,None,None)defisValid(self,root:TreeNode,min_:TreeNode,max_:TreeNode):如果不是root:如果min_!=None且root.val<=min_.val:如果max_!=None且root.val>=max_.val:返回False,则返回FalseGitHub链接Python
