题目:判断是不是搜索二叉树
思路:1.中序遍历的序列是严格递增的。
2.节点的左子树上的值均小于该节点的值,右子树的值均大于该节点的值。
1.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
x = None
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root==None:return True
if not self.isValidBST(root.left):return False
if self.x!=None and self.x.val>=root.val:return False
self.x = root
if not self.isValidBST(root.right):return False
return True
2.
class Solution(object):
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self._isValidBST(root,None,None)
def _isValidBST(self,root,minVal,maxVal):
if root==None:return True
if minVal!=None and root.val<=minVal:return False
if maxVal!=None and root.val>=maxVal:return False
return self._isValidBST(root.left,minVal,root.val) and self._isValidBST(root.right,root.val,maxVal)