题解 | #判断是不是二叉搜索树#
判断是不是二叉搜索树
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