Leetcode练习(Python):树类:第98题:验证二叉搜索树:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
题目:
验证二叉搜索树:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
思路:
遇到树第一想到了递归,用递归来实现。
程序 :
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
return self.auxiliary(root, float('inf'), float('-inf'))
def auxiliary(self, root: TreeNode, max_for_node, min_for_node):
if not root:
return True
elif root.val >= max_for_node or root.val <= min_for_node:
return False
return self.auxiliary(root.left, root.val, min_for_node) and self.auxiliary(root.right, max_for_node, root.val)
浙公网安备 33010602011771号