Lowest Common Ancestor in a Binary Tree

PROBLEM :

Given a Binary Tree and 2 nodes value n1 and n2  , your task is to find the lowest common ancestor of the two nodes . You are required to complete the function LCA . You should not read any input from stdin/console. There are multiple test cases. For each test case, this method will be called individually.

Example :


Input:
The task is to complete the method LCA which takes 3 arguments, root of the Tree and two nodes value  n1 and n2 . The struct node has a data part which stores the data, pointer to left child and pointer to right child.
There are multiple test cases. For each test case, this method will be called individually.

Output:
The function should return the node which is the least common ancestor of the two nodes n1 and n2 .

Constraints:
1 <=T<= 30
1 <=Number of nodes<= 100
1 <=Data of a node<= 1000

Example:

Input
1
2
1 2 L 1 3 R
2 3

Output
1

In above example there is one  test case which represent a tree with 3 nodes and 2 edges where root is 1, left child of 1 is 2 and right child of 1 is 3.


--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

// LCA can also be found using using two arrays containg the path of both elemets , then find the first common elements from the two arrays .

/* A binary tree node
struct node
{
    int data;
    struct Node* left, * right;
}; */


/*you are required to
complete this function */

Node * LCA(Node* root ,int n1 ,int n2 )
{
    if(root==NULL)
        return root ;
       
    if(root->data==n1)
        return root ;
    if(root->data==n2)
        return root ;
       
    Node *L,*R ;
    L=LCA(root->left,n1,n2) ;
    R=LCA(root->right,n1,n2) ;
   
    if(L&&R)
        return root ;
       
    return (L!=NULL)?L:R ;
}

---------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )