题解 | #判断是不是二叉搜索树#
判断是不是二叉搜索树
http://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b
解题思路:
- 对于二叉搜索树来说,应该每个结点的值大于他的左子树的值,小于他的右子树的值
- 兵分两路走,然后在走的过程中不断的判断,这棵树满不满足二叉搜索树
- return 递归函数:会一直往下面找,直到产生想要的那个结果
# 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:
# write code here
return self.search(root, float('-inf'), float('inf'))
def search(self, root, left, right):
if not root:
return True
if root.val < left or root.val > right:
return False
return self.search(root.left, left, root.val) and self.search(root.right, root.val, right)