输入描述:
从根节点开始,逐层输入每个节点的值,空树或空节点输入为None,比如10,5,15,3,7,13,18
输出描述:
是二叉搜索树打印True,否则打印False

代码实现

构建树节点
class TreeNode:
    def __init__(self,val):
        self.val = val
        self.left = None
        self.right = None

重构二叉树
def buildTree(nums,i):
    if i >= len(nums) or nums[i] == 'None':
        return None
    root = TreeNode(nums[i])
    root.left = buildTree(nums,2*i+1)
    root.right = buildTree(nums,2*i+2)
    return root

判断是否为二叉搜索树
def is_val(root,min_v,max_v):
    if root is None:
        return True
    if root.left is not None:
        if root.left.val >= root.val or root.left.val <= min_v:
            return False
    if root.right is not None:
        if root.right.val <= root.val or root.right.val >= max_v:
            return False
    return is_val(root.left,min_v,root.val) and is_val(root.right,root.val,min_v)

def isvalBST(root):
    if root is None:
        return True
    return is_val(root,-(2**23),2**23)