输入描述:
从根节点开始,逐层输入每个节点的值,空树或空节点输入为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)