zoukankan      html  css  js  c++  java
  • 98. 验证二叉搜索树-深度优先搜索(leetcode)

    给定一个二叉树,判断其是否是一个有效的二叉搜索树。

    假设一个二叉搜索树具有如下特征:

    节点的左子树只包含小于当前节点的数。
    节点的右子树只包含大于当前节点的数。
    所有左子树和右子树自身必须也是二叉搜索树。

    本题具有最优子结构,想要整棵树都是二叉搜索树,那左子树,右子树都要是二叉搜索树。

    直接递归

    注意:

      1. 二叉搜索树的最右左节点<最左右节点,想要在递归时保有这两个变量,就要增加 upper,lower 上界下界。

    代码:

    # 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:
            if not root: return True

            return self.helper(root,float('inf'),float('-inf'))
        
        def helper(self,node,upper,lower):
            if not node:
                return True

            if (not node.left)  and (not node.right):
                return True
            
            if  self.helper(node.left,node.val,lower) and self.helper(node.right,upper,node.val):
                if (not node.left or lower<node.left.val < node.val ) and (not node.right or node.val<node.right.val<upper):
                    return True 
                else:
                    return False
            else:
                return False
  • 相关阅读:
    asp.net中控件的enableviewstate属性 的设置
    一个怎样得到treeView值的小例子
    实现表格边框的样式表
    GridView的精妙使用
    无法向会话状态服务器发出会话状态请求。
    Microsoft Visual Studio 2008 快捷键大全
    我每天学习一句英语今天要学的是
    C语言学习心得
    怎么样把GridView里的数据导出到Excel里
    怎么样在c#程序中放音乐
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12446866.html
Copyright © 2011-2022 走看看