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 check_binary_search_tree_(root, values = None, leftParent = None, rightParent = None, parent = None):
- #print root.data
- #print root.left
- #print root.right
- toReturn = True
- if values == None:
- values = dict()
- leftParent = root
- rightParent = root
- parent = root
- '''
- print root.data
- if root.right:
- print root.right.data
- if root.left:
- print root.left.data
- print "left par = " + str(leftParent.data)
- print "right par = " + str(rightParent.data)
- print "-------------"
- '''
- if not root.data in values:
- values[root.data] = True
- else:
- return False
- #print values
- if (root.left):
- if (root.left.data > root.data):
- return False
- elif(root == leftParent):
- toReturn = check_binary_search_tree_(root.left, values, leftParent = root.left, rightParent = root, parent = root)
- elif(root.left.data > leftParent.data):
- toReturn = check_binary_search_tree_(root.left, values, leftParent = leftParent, rightParent = root, parent = root)
- else:
- return False
- if (root.right and toReturn):
- if (root.right.data < root.data):
- return False
- elif (root == rightParent):
- toReturn = check_binary_search_tree_(root.right, values, leftParent = root, rightParent = root.right, parent = root)
- elif (root.right.data < rightParent.data):
- toReturn = check_binary_search_tree_(root.right, values, leftParent = root, rightParent = rightParent, parent = root)
- else:
- return False
- return toReturn
Advertisement
RAW Paste Data
Copied
Advertisement