zoukankan      html  css  js  c++  java
  • 95. 验证二叉查找树

    95. 验证二叉查找树

    中文English

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

    一棵BST定义为:

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

    样例

    样例 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
        """
        def __init__(self):
            #只需要中序遍历,然后判断当前值是否小于下一个值
            self.pre = None 
        
        def isValidBST(self, root):
            # write your code here
            if not root: return True
            
            #如果是为None,则也不符合条件
            if not self.isValidBST(root.left):
                return False 
            
            #进行判断,如果上一个值大于等于下一个值,则说明不符合条件
            if self.pre and self.pre >= root.val:
                return False
            
            self.pre = root.val
            
            if not self.isValidBST(root.right):
                return False
            
            
            return True 
  • 相关阅读:
    我和计算机
    十四周学习记录
    十五周个人作业
    怎样成为一个高手
    C语言第0次作业
    C语言博客作业03函数
    C博客作业01分支、顺序结构
    C语言博客作业02循环结构
    Rails后台,Firefox Addons前端,JS的AJAX调用
    Ruby 三元一次线性方程组
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13417350.html
Copyright © 2011-2022 走看看