1. 程式人生 > >LeetCode 98 驗證二叉搜尋樹 Python

LeetCode 98 驗證二叉搜尋樹 Python

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

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

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

示例 1:

輸入:
    2
   / \
  1   3
輸出: true

示例 2:

輸入:
    5
   / \
  1   4
     / \
    3   6
輸出: false
解釋: 輸入為: [5,1,4,null,null,3,6]。
     根節點的值為 5 ,但是其右子節點值為 4 。 
class Solution:
    def isValidBST(self, root):
        def inorderTraversal(root): 
            if root == None:
                return []
            res = []
            res += inorderTraversal(root.left)
            res.append(root.val)
            res += inorderTraversal(root.right)
            return res

        res = inorderTraversal(root)
        if res != sorted(list(set(res))): return False
        return True