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

京公网安备 11010502036488号