您的位置:首页 > 其它

Leetcode 98 Validate Binary Search Tree

2016-06-20 15:33 507 查看
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.

存储左边与右边的最大与最小值和root比较

class Solution(object):
def isValidBST(self,root):
return self.isValidBST2(root, float('-inf'), float('inf'))

def isValidBST2(self, root, minval, maxval):
if not root:
return True
if root.val >= maxval or root.val <= minval:
return False
return self.isValidBST2(root.left, minval, root.val) and self.isValidBST2(root.right, root.val, maxval)


inorder traversal过程中进行比较

def is_valid_bst(root)
ans, stack = [], [[false,root]]
while not stack.empty?
visit, node = stack.pop
if node
stack << [false,node.right] << [true,node] << [false,node.left] if not visit
if visit
if ans.empty? or node.val > ans[-1]
ans << node.val
else
return false
end
end
end
end
true
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: