首页 > 编程语言 > 详细

[leetcode]Validate Binary Search Tree @ Python

时间:2014-05-26 10:47:52      阅读:468      评论:0      收藏:0      [点我收藏+]

原题地址:https://oj.leetcode.com/problems/validate-binary-search-tree/

题意:检测一颗二叉树是否是二叉查找树。

解题思路:看到二叉树我们首先想到需要进行递归来解决问题。这道题递归的比较巧妙。让我们来看下面一棵树:

                  4

                 /    \

                 2   6

                /    \   /   \

                1      3 5    7

     对于这棵树而言,怎样进行递归呢?root.left这棵树的所有节点值都小于root,root.right这棵树的所有节点值都大于root。然后依次递归下去就可以了。例如:如果这棵树是二叉查找树,那么左子树的节点值一定处于(负无穷,4)这个范围内,右子树的节点值一定处于(4,正无穷)这个范围内。思路到这一步,程序就不难写了。

代码:

bubuko.com,布布扣
# 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 ValidBST(self, root, min, max):
        if root == None:
            return True
        if root.val <= min or root.val >= max:
            return False
        return self.ValidBST(root.left, min, root.val) and self.ValidBST(root.right, root.val, max)
    
    def isValidBST(self, root):
        return self.ValidBST(root, -2147483648, 2147483647)
bubuko.com,布布扣

 

[leetcode]Validate Binary Search Tree @ Python,布布扣,bubuko.com

[leetcode]Validate Binary Search Tree @ Python

原文:http://www.cnblogs.com/zuoyuan/p/3747137.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!