码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 98 Validate Binary Search Tree

时间:2020-10-26 11:18:28      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:validate   and   二叉搜索树   ida   inpu   val   lang   input   examples   

题目介绍

判断给定二叉树是否为一棵二叉搜索树。

Examples:

    2
   /   1   3

Input: [2,1,3]
Output: true
  
    5
   /   1   4
     /     3   6

Input: [5,1,4,null,null,3,6]
Output: false

Solution

仅仅使用递归判断左子树是否平衡或者右子树是否平衡有可能出现右子树中的值比当前根节点还要小。利用先序遍历,平衡二叉树的结果是一个升序序列,因此,只要判断新增加的节点是否比前一节点大即可。

class Solution(object):
    def isValidBST(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        
        max_val = [float(‘-inf‘)]
        def helpfunc(root):
            if not root:
                return True
            if not helpfunc(root.left):
                return False
            if root.val <= max_val[0]:
                return False
            else:
                max_val[0] = root.val
            if not helpfunc(root.right):
                return False
            return True
        
        return helpfunc(root)

一种更优雅的方式,是采用递归,但是每次传入范围:

class Solution(object):
    def isValidBST(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        min_value, max_value = float(‘-inf‘), float(‘inf‘)
        
        def helpfunc(root, min_value, max_value):
            if not root:
                return True
            if root.val <= min_value or root.val >= max_value:
                return False
                
            return helpfunc(root.left, min_value, root.val) and helpfunc(root.right, root.val, max_value)
        
        return helpfunc(root, min_value, max_value)

Leetcode 98 Validate Binary Search Tree

标签:validate   and   二叉搜索树   ida   inpu   val   lang   input   examples   

原文地址:https://www.cnblogs.com/yuyinzi/p/13873563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!