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)
  • 相关阅读:
    进阶实验2-3.3 两个有序链表序列的交集 (20分)
    习题2.7 弹球距离 (15分)
    习题2.2 数组循环左移 (20分)
    习题2.1 简单计算器 (20分)
    习题2.5 两个有序链表序列的合并 (15分)
    习题2.4 递增的整数序列链表的插入 (15分)
    线性表和链表
    C. Boboniu and Bit Operations
    D
    C. Good Subarrays
  • 原文地址:https://www.cnblogs.com/bonelee/p/11610047.html
Copyright © 2011-2022 走看看