LeetCode--098--验证搜索二叉树(python)
Posted npc-assange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode--098--验证搜索二叉树(python)相关的知识,希望对你有一定的参考价值。
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
示例 2:
低级做法,中序遍历,看看是否是有序的
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, x): 4 # self.val = x 5 # self.left = None 6 # self.right = None 7 8 class Solution: 9 def isValidBST(self, root: TreeNode) -> bool: 10 res_ = [] 11 stack = [] 12 while root or stack: 13 if root: 14 stack.append(root) 15 root = root.left 16 else: 17 root = stack.pop() 18 res_.append(root.val) 19 root = root.right 20 stack=res_.copy() 21 stack.sort() 22 if len(set(stack)) != len(stack): 23 return False 24 return stack== res_ 25 26
执行用时 :68 ms, 在所有 Python3 提交中击败了73.22%的用户
内存消耗 :16.8 MB, 在所有 Python3 提交中击败了7.23%的用户
每次将当前值和上下界进行比较,递归对其左右子树进行该过程:
1 class Solution: 2 def isValidBST(self, root): 3 """ 4 :type root: TreeNode 5 :rtype: bool 6 """ 7 def helper(node, lower = float(‘-inf‘), upper = float(‘inf‘)): 8 if not node: 9 return True 10 11 val = node.val 12 if val <= lower or val >= upper: 13 return False 14 15 if not helper(node.right, val, upper): 16 return False 17 if not helper(node.left, lower, val): 18 return False 19 return True 20 21 return helper(root)
执行用时 :76 ms, 在所有 Python3 提交中击败了42.48%的用户
内存消耗 :16.2 MB, 在所有 Python3 提交中击败了39.06%的用
以上是关于LeetCode--098--验证搜索二叉树(python)的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录Day20-Leetcode654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
⭐算法入门⭐《二叉树 - 二叉搜索树》简单02 —— LeetCode 98. 验证二叉搜索树
Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35