Lowest Common Ancestor in a BST Python
PROGRAM TO FIND THE LOWEST COMMON ANCESTOR IN A BINARY SEARCH TREE
OUTPUT:
LCA of 10 and 14 is 12 LCA of 14 and 8 is 8 LCA of 10 and 22 is 20
class Node: # Constructor to create a new node def __init__(self, data): self.data = data self.left = None self.right = None # Function to find LCA of n1 and n2. The function assumes# that both n1 and n2 are present in BSTdef lca(root, n1, n2): # Base Case if root is None: return None # If both n1 and n2 are smaller than root, then LCA # lies in left if(root.data > n1 and root.data > n2): return lca(root.left, n1, n2) # If both n1 and n2 are greater than root, then LCA # lies in right if(root.data < n1 and root.data < n2): return lca(root.right, n1, n2) return root # Driver program to test above function # Let us construct the BST shown in the figureroot = Node(20)root.left = Node(8)root.right = Node(22)root.left.left = Node(4)root.left.right = Node(12)root.left.right.left = Node(10)root.left.right.right = Node(14) n1 = 10 ; n2 = 14t = lca(root, n1, n2)print "LCA of %d and %d is %d" %(n1, n2, t.data) n1 = 14 ; n2 = 8t = lca(root, n1, n2)print "LCA of %d and %d is %d" %(n1, n2 , t.data) n1 = 10 ; n2 = 22t = lca(root, n1, n2)print "LCA of %d and %d is %d" %(n1, n2, t.data)
LCA of 10 and 14 is 12 LCA of 14 and 8 is 8 LCA of 10 and 22 is 20
Comments
Post a Comment