Showing posts with label Python Program to Find the Nearest Common Ancestor in the Given set of Nodes. Show all posts
Showing posts with label Python Program to Find the Nearest Common Ancestor in the Given set of Nodes. Show all posts

Wednesday, December 18, 2019

Python Program to Find the Nearest Common Ancestor in the Given set of Nodes




Suppose we have a binary tree, so
the least common ancestor of the


i)               node 9 and node 6    =>    node 1


ii)              node 5 and node 9    =>    node 5


iii)            node 4 and node 6    =>    node 7


Definition of Nearest Common Ancestor


Let T be a binary tree. Let u and v be the nodes. The lowest common ancestor between two nodes u and v is defined as the lowest node In T that has both u and v as descendants. The Lca is the shared ancestor of u and v.


ALGORITHM


1.) If (node found)

       return node

     else

       return Null

 2.) Traverse the nodes in Binary Tree using the inorder traversal i.e left -> parent ->   right node
      Again follow step 1


 3.) If the both node returns not null then it is the lowest common ancestor
      If at least one node returns Null then still we haven%u2019t got lowest common ancestor


The third point can be described using the below diagram:-



class Node: 
    def __init__(self,data): 
    #Assign data to the new node, set left and right children to None 
        self.data = data; 
        self.left = None; 
        self.right = None; 


def lowestCommonAncestor(root,n1,n2):        # Here, root represents the parent node

    # Step 1
    if(root is None):
        return None

    if(root.data == n1 or root.data==n2):
        return root


      # Step 2
    left = lowestCommonAncestor(root.left,n1,n2)
    right = lowestCommonAncestor(root.right,n1,n2)


     # Step 3 
    if left and right:     # Both nodes return some value, then we have got the lca [ where root is lca ]
        return root


     if left:                    # If one node returned NULL
         return left
     else:
         return right


   

root = Node(11); 
root.left = Node(12); 
root.right = Node(13); 
root.left.left = Node(14); 
root.left.right = Node(45); 
root.right.left = Node(64); 
root.right.right = Node(73);



print(lowestCommonAncestor(root,64,12).data) 


Output :- 13



Arrays in Solidity Programming Language.

Arrays Solidity supports both generic and byte arrays. It supports both fixed size and dynamic arrays. It also supports multidimensional ...