题目:
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
一个二叉搜索树有如下定义:
示例 1:
2 / \ 1 3
二叉树[2,1,3]
, 返回 true.
示例 2:
1 / \ 2 3
二叉树 [1,2,3]
, 返回 false.
分析:
代码:
class Solution(object):
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
self.ret = True
def dfs(node,left,right):
if self.ret and node:
if node.left:
# print "left:%d,node:%d"%(node.left.val,node.val)
# print "node.left:%d,left:%f"%(node.left.val,left)
if left < node.left.val < node.val:
dfs(node.left,left,node.val)
else:
# print node.val
self.ret = False
return self.ret
if node.right:
# print "node.val:%d,node.right:%d,right:%f" % (node.val,node.right.val, right)
if node.val < node.right.val < right:
dfs(node.right,node.val,right)
else:
# print node.val
self.ret = False
return self.ret
dfs(root,float("-inf"),float("inf"))
return self.ret
思考: