赞
踩
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
例:
输入:root = [2,1,3] 输出:true
解析:
中序遍历,将遍历后的值存入列表,然后对列表进行去重,排序操作,如果和原列表一致,那么代表为二叉搜索树。
- # 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):
- def isValidBST(self, root):
- """
- :type root: TreeNode
- :rtype: bool
- """
- nums = self.search(root)
- return sorted(set(nums)) == nums # sorted()用来排序,set()用来去重
-
-
-
- def search(self, root): # 搜索函数
- if root == None: # 判空
- return []
- return self.search(root.left) + [root.val] + self.search(root.right) # 左子树 + 根 + 右子树(中序遍历)
-
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。