zoukankan      html  css  js  c++  java
  • 深度优先搜索

    二叉树创建

    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left = None
            self.right = None
    
    
    def createTree(l):
        l = l[::-1]
        def create(l):
            a = l.pop()
            if a == '#':
                root = None
            else:
                root = TreeNode(a)
                root.left = create(l)
                root.right = create(l)
            return root
        return create(l)
    

    验证二叉搜索树

    思路:刚开始以为直接判断每个节点大于左节点,小于右节点,就可以。测试不通过,原因是隔代有可能出现错误。
    后面查阅了一番,大部分的解法思路如下:当前节点值就是左子树的最大值,右子树的最小值,所以只要传递下去即可。
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def validBST(self, root, small, large):
            if root is None:
                return True
            elif root.val <= small or root.val >= large:
                return False
            else:
                return self.validBST(root.left, small, root.val) and self.validBST(root.right, root.val, large)
        def isValidBST(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            return self.validBST(root,-2**32,2**32)
    
  • 相关阅读:
    经济学原理---10 外部性-- 读书笔记
    经济学原理---9应用:国际贸易--- 读书笔记
    人月神话阅读笔记之一
    小水王
    构建之法读书笔记之五
    课堂作业
    时间记录日志
    构建之法读书笔记之四
    查找水王程序
    代码阅读方法与实践阅读笔记01
  • 原文地址:https://www.cnblogs.com/linshuhui/p/9894549.html
Copyright © 2011-2022 走看看