首页 > 其他 > 详细

Leetcode 98. Validate Binary Search Tree

时间:2016-12-19 11:16:36      阅读:156      评论:0      收藏:0      [点我收藏+]

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

原文:http://www.cnblogs.com/lettuan/p/6196402.html

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