```# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @return bool布尔型
#
'''
“”“
区间+递归
”“”
class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        return self.dfs(root, float('-inf'), float('inf'))
        
    def dfs(self,root,l,r):
        if not root:
            return True
        if root.val<l or root.val>r:
            return False
        return self.dfs(root.left,l,root.val) and self.dfs(root.right,root.val,r)
'''
"""
中序遍历
"""
class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        res=[]
        def zhongxu(root):
            if root is None:
                return None
            if root.left is not None:
                zhongxu(root.left)
            res.append(root.val)
            if root.right is  not None:
                zhongxu(root.right)
        zhongxu(root)
        for i in range(1,len(res)):
            #print(res[i-1])
            if res[i]<res[i-1]:
                return False
        return True
##### 区间递归的方式,思路上是这样的:首先对于root.val来说,其对应的初始区间为(-inf,inf),
		那么根据题意root.left.val区间为(-inf,root.val),同理root.right.val的区间为(root.val,inf)
		这样就一定能满足root.left.val<root.val<root.right.val,对每一个节点这么递归,最后取&即可。
		中序遍历的思路也很清晰,就是遍历之后的数组一定是一个严格单点递增的数组,for 循环一下就解决了。