[leetcode]Validate Binary Search Tree @ Python


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

題意:檢測一顆二叉樹是否是二叉查找樹。

解題思路:看到二叉樹我們首先想到需要進行遞歸來解決問題。這道題遞歸的比較巧妙。讓我們來看下面一棵樹:

                  4

                 /    \

                 2   6

                /    \   /   \

                1      3 5    7

     對於這棵樹而言,怎樣進行遞歸呢?root.left這棵樹的所有節點值都小於root,root.right這棵樹的所有節點值都大於root。然后依次遞歸下去就可以了。例如:如果這棵樹是二叉查找樹,那么左子樹的節點值一定處於(負無窮,4)這個范圍內,右子樹的節點值一定處於(4,正無窮)這個范圍內。思路到這一步,程序就不難寫了。

代碼:

# 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM