zoukankan      html  css  js  c++  java
  • 算法——dfs 判断是否为BST

    95. 验证二叉查找树

    中文English

    给定一个二叉树,判断它是否是合法的二叉查找树(BST)

    一棵BST定义为:

    • 节点的左子树中的值要严格小于该节点的值。
    • 节点的右子树中的值要严格大于该节点的值。
    • 左右子树也必须是二叉查找树。
    • 一个节点的树也是二叉查找树。

    Example

    样例 1:

    输入:{-1}
    输出:true
    解释:
    二叉树如下(仅有一个节点):
    	-1
    这是二叉查找树。
    

    样例 2:

    输入:{2,1,4,#,#,3,5}
    输出:true
    解释:
    	二叉树如下:
    	  2
    	 / 
    	1   4
    	   / 
    	  3   5
    这是二叉查找树。

    """
    Definition of TreeNode:
    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left, self.right = None, None
    """
    
    class Solution:
        """
        @param root: The root of binary tree.
        @return: True if the binary tree is BST, or false
        """
        _is_bst = True
        _last_val = -float('inf')
        
        def isValidBST(self, root):
            # write your code here
            self.helper(root)
            return self._is_bst
            
        def helper(self, root):
            if not root:
                return
            self.helper(root.left)
            if root.val <= self._last_val:
                self._is_bst = False # return
            self._last_val = root.val
            self.helper(root.right)
        
    

      

    需要在遍历中记住上次遍历节点,根据上次的节点和当前节点进行比较而得到result的算法模板:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Solution():
       last_node = None
       result = None
        
       def run(self, root):
            self.dfs(root)
            return self.result
        
       def dfs(self):
           if last_node is None:
               last_node = root
           else:
               do_sth(last_node, root)
                
           dfs(root.left)
     
           dfs(root.right)
  • 相关阅读:
    FCM模糊c均值聚类
    Iris数据集免费下载
    matlab 信息增益函数 入侵检测kudcupp
    KNN分类算法的实现
    Git远程仓库地址变更本地如何修改
    浅析 UART、RS232、TTL 之间的关系(转)
    编译某一个ko模块make modules SUBDIRS=drivers/xxx/
    Linux系统调用之SYSCALL_DEFINE(转)
    【TCP/IP详解】TCP保活机制(转)
    linux cpu、内存、IO、网络的测试工具(转)
  • 原文地址:https://www.cnblogs.com/bonelee/p/11610047.html
Copyright © 2011-2022 走看看