Validate Binary Search Tree Leetcode Python

Given a binary tree, determine if it is a valid binary search tree (BST).


Assume a BST is defined as follows:


The left subtree of a node contains only nodes with keys less than the node's key.


The right subtree of a node contains only nodes with keys greater than the node's key.


Both the left and right subtrees must also be binary search trees.

根据定义http://en.wikipedia.org/wiki/Binary_search_tree

The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
The left and right subtree each must also be a binary search tree.
Each node can have up to two successor nodes.
There must be no duplicate nodes.
A unique path exists from the root to every other node.

左子树小于节点小于右子树,并且不能有重复出现的值。做法是我们每次比较左右节点和根节点的值,只要有一个节点不满足条件就返回FALSE

we compare the left, right node key with root key. If any of the condition cannot match the requirement, we return False.

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param root, a tree node
    # @return a boolean
    def testnode(self,root,minval,maxval):
        if root==None:
            return True
        if root.val>maxval or root.val<minval:
            return False
        return self.testnode(root.left,minval,root.val-1) and self.testnode(root.right,root.val+1,maxval)
    def isValidBST(self, root):
        
        minval=-3147483648
        maxval=3147483648
        return self.testnode(root,minval,maxval)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值