Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """ Node is defined as
- class node:
- def __init__(self, data):
- self.data = data
- self.left = None
- self.right = None
- """
- def checkBST(root):
- max = 10000
- min = 0
- data = {root.data}
- def checkBounds(data, leftBound, rightBound):
- #Case 1 - Not a BST
- return False if data < leftBound or data > rightBound else True
- def evaluateNode(node, lowerBound, upperBound):
- #Case 2 - Not a unique BST
- if node.data in data:
- return False
- else:
- data.add(node.data)
- if not checkBounds(node.data, lowerBound, upperBound): return False
- if node.left is not None:
- if not evaluateNode(node.left, lowerBound, node.data): return False
- if node.right is not None:
- if not evaluateNode(node.right, node.data, upperBound): return False
- return True
- #Left Side
- if not evaluateNode(root.left, min, root.data): return False
- #Right Side
- if not evaluateNode(root.right, root.data, max): return False
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement