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 ;
}
---------------------------------------------------------------------------------
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
Post a Comment