首页 > 代码库 > Leetcode 98. Validate Binary Search Tree

Leetcode 98. Validate Binary Search Tree

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.

Example 1:

    2
   /   1   3

Binary tree [2,1,3], return true.

Example 2:

    1
   /   2   3

Binary tree [1,2,3], return false.

对每一个节点使用一个upper bound and lower bound. 时间复杂度 O(N).

 1 def isValidBST(self, root):
 2         """
 3         :type root: TreeNode
 4         :rtype: bool
 5         """
 6         maxInt = 2147483647
 7         minInt = -2147483648
 8         
 9         return self.isBSTHelper(root, minInt, maxInt)
10         
11     def isBSTHelper(self, root, minVal, maxVal):
12         if not root:
13             return True
14         
15         if root.val <= maxVal and root.val >= minVal and self.isBSTHelper(root.left, minVal, root.val - 1) and self.isBSTHelper(root.right, root.val + 1, maxVal):
16             return True
17         else:
18             return False

 

Leetcode 98. Validate Binary Search Tree