题目:98.验证二叉搜索树
思路:递归
代码:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
pre = float('-inf')
status = True
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def inorder(root):
if not root or self.status==False:
return
inorder(root.left)
if root.val > self.pre:
self.pre = root.val
else:
self.status = False
inorder(root.right)
inorder(root)
return self.status
参考:【python3】递归法与迭代法
题解:总体的思路就是先遍历左子树再取中间值,然后再遍历右子树。
注意点:在遍历过程中,加入中间变量pre来充当【遍历结束之后的最后一个节点左子树元素】的左孩子,若大于左孩子则将【遍历结束之后的最后一个节点左子树元素】当作递归到上一节点的左孩子,同时加入status向量判断是否满足要求,若否,则直接结束inorder,返回staus状态值。



