【题目】
实现一个函数,检查一棵二叉树是否为二叉搜索树。
示例 1:
输入:
2
/
1 3
输出: true
示例 2:
输入:
5
/
1 4
/
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
【代码】
class Solution:
def dfs(self,root):
if not root:
return
self.dfs(root.left)
if self.pre is not None and self.pre>=root.val:
self.ans=False
else:
self.pre=root.val
self.dfs(root.right)
def isValidBST(self, root: TreeNode) -> bool:
self.ans=True
self.pre=None
self.dfs(root)
return self.ans
【方法2】
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def helper(root,low=float("-inf"),high=float("inf")):
if not root:
return True
if root.val<=low or root.val>=high:
return False
if not helper(root.right,root.val,high):
return False
if not helper(root.left,low,root.val):
return False
return True
return helper(root)