Predecessor and Successor BST Python
- Get link
- X
- Other Apps
PROGRAM TO FIND INORDER PREDECESSOR AND SUCCESSOR FOR A GIVEN KEY IN BST
class Node: # Constructor to create a new node def __init__(self, key): self.key = key self.left = None self.right = None# This function finds predecessor and successor of key in BST# It sets pre and suc as predecessor and successor respectivelydef findPreSuc(root, key): # Base Case if root is None: return # If key is present at root if root.key == key: # the maximum value in left subtree is predecessor if root.left is not None: tmp = root.left while(tmp.right): tmp = tmp.right findPreSuc.pre = tmp # the minimum value in right subtree is successor if root.right is not None: tmp = root.right while(temp.left): tmp = tmp.left findPreSuc.suc = tmp return # If key is smaller than root's key, go to left subtree if root.key > key : findPreSuc.suc = root findPreSuc(root.left, key) else: # go to right subtree findPreSuc.pre = root findPreSuc(root.right, key)# A utility function to insert a new node in with given key in BSTdef insert(node , key): if node is None: return Node(key) if key < node.key: node.left = insert(node.left, key) else: node.right = insert(node.right, key) return node# Driver program to test above functionkey = 65 #Key to be searched in BST """ Let us create following BST 50 / \ 30 70 / \ / \ 20 40 60 80"""root = Noneroot = insert(root, 50)insert(root, 30);insert(root, 20);insert(root, 40);insert(root, 70);insert(root, 60);insert(root, 80);# Static variables of the function findPreSucfindPreSuc.pre = NonefindPreSuc.suc = NonefindPreSuc(root, key)if findPreSuc.pre is not None: print "Predecessor is", findPreSuc.pre.keyelse: print "No Predecessor"if findPreSuc.suc is not None: print "Successor is", findPreSuc.suc.keyelse: print "No Successor"
OUTPUT:
Predecessor is 60 Successor is 70
- Get link
- X
- Other Apps
Comments
Post a Comment