1. 程式人生 > >[leetcode]python3 演算法攻略-驗證二叉搜尋樹

[leetcode]python3 演算法攻略-驗證二叉搜尋樹

給定一個二叉樹,判斷其是否是一個有效的二叉搜尋樹。

一個二叉搜尋樹具有如下特徵:

  • 節點的左子樹只包含小於當前節點的數。
  • 節點的右子樹只包含大於當前節點的數。
  • 所有左子樹和右子樹自身必須也是二叉搜尋樹。

方案一:構建一個輔助函式,把當前節點的值,傳遞給子節點,在子節點中進行比較

class Solution(object):        
    def validBST(self,root,small,large):
        if root == None:
            return True
        if small >= root.val or large <= root.val:
            return False  
        return self.validBST(root.left, small, root.val) and self.validBST(root.right, root.val, large)      
        
    def isValidBST(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        return self.validBST(root, -2**32, 2**32-1)