### C++ program to find lowest common ancestor in a binary tree

Description:
This Program is to find sink odd nodes in binary tree
For Example:

Input :
The Elements are : 1 ,2 ,3 ,4 ,5 ,6 ,7

1 / \ 2 3 / \ / \
4 5 6 7

Output :
Enter two no to find lowest common ancestor : 4 6 LCA(4,6) = 1

Program :
//C++ program to find lowest common ancestor in a binary tree #include <bits/stdc++.h> using namespace std; // tree node struct Node { int data; Node *left, *right; }; // returns a new tree Node Node* newNode(int data) { Node* temp = new Node(); temp->data = data; temp->left = temp->right = NULL; return temp; } // This function returns pointer to LCA of two given values num1 and num2. struct Node *LCA(struct Node* root, int num1, int num2) { // Base case if (root == NULL) return NULL; if (root->data == num1 || root->data == num2) return root; // Look for keys in left and right subtrees Node *left = LCA(root->left, num1, num2); Node *right = LCA(root->right, num1, num2); if (left && right) return root; // Otherwise check if left subtree or right subtree is LCA return (left != NULL)? left: right; } int main() { Node * root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(4); root->left->right = newNode(5); root->right->left = newNode(6); root->right->right = newNode(7); int a,b; cout<<"Enter two no to find lowest common ancestor : "; cin>>a>>b; cout << "LCA("<<a<<","<<b<<") = " << LCA(root, a, b)->data; return 0; }

#### More Articles of Mandeep Sheoran:

Name Views Likes
C++ program to insert an element into binary tree 6240 19
C++ program to find an element into binary tree 772 16
C++ std::is_void 572 15
C++ program to find the closest element in binary search tree 916 19
C++ program to replace every element with the least greater element on its right 573 12
C++ program to delete an element into binary tree 785 24
C++ program to find maximum element between two nodes of binary search tree 700 20
C++ std::remove_copy_if with std::vectors 548 11
C++ program to print duplicate elements from the binary search tree 2937 15
C++ program to find depth of the deepest odd level node in binary tree 575 23
C++ program to remove duplicate elements from the binary search tree 1555 20
C++ std::rotate_copy with std::vector 530 14
C++ std::copy_n with std::vector 638 22
C++ std::copy_if with std::vector 1552 18
C++ program to print all the elements of binary search tree 7107 22
C++ std::reverse_copy with std::list 599 18
C++ program to print all the elements of binary tree 1158 18
C++ program to print all full nodes in a binary tree 573 25
C++ program to find sink odd nodes in binary tree 580 15
C++ std::is_copy_assignable 596 22
C++ program to check whether a binary tree is a full binary tree or not using recursion 609 19
C++ std::is_copy_constructible 618 27
C++ program to delete an element into binary search tree 2873 18
C++ std::reverse_copy with std::vector 488 18
C++ std::rotate with std::vector 641 15
C++ program to check for symmetric binary tree using recursion 599 25
C++ program to maximum sum from a tree with adjacent levels not allowed 552 15
C++ std::copy_n with std::list 595 21
C++ program to check if two trees are identical using recursion 546 15
C++ std::copy_n 874 21
C++ std::copy_if with std::list 998 19
C++ program to print the nodes at odd levels of a tree 562 13
C++ program to find lowest common ancestor in a binary tree 690 29
C++ program to find depth of the deepest odd level leaf node 494 13
C++ std::remove_copy_if with std::list 667 20
C++ program to add all greater values to every node in a given binary search tree 638 15