• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to secondary sidebar

GoHired

Interview Questions asked in Google, Microsoft, Amazon

Join WeekEnd Online Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

  • Home
  • Best Java Books
  • Algorithm
  • Internship
  • Certificates
  • About Us
  • Contact Us
  • Privacy Policy
  • Array
  • Stack
  • Queue
  • LinkedList
  • DP
  • Strings
  • Tree
  • Mathametical
  • Puzzles
  • Graph

Binary Tree Isomorphic to each other

March 22, 2017 by Dhaval Dave

Find weather two given trees are isomorphic to each other or not.
Lets understand What is isomorphic strings

AAB and XXY are IsoMorphic to each other, consider A replaces/morphs as X and B as Y, then both strings are isomorphic.
ABC and XXY are not IsoMorphic.isomorohic tree

In case of Trees Two binary trees A and B are isomorphic if they have the same shape means the values stored in the nodes do not affect whether two trees are isomorphic. Or its even called Quasi Isomorphic tree
(Mathematically we are discussing IsoMorphic rooted tree and not IsoMorphic Binary Tree, See at  : https://www.slideshare.net/AnasAssayuti/nota-math-discrete-tree Slide 28 onwards

Write a method isIsomorphic that returns true if its two tree are isomorphic and false otherwise.

Here w’ll discuss both ways to find if a tree is isomorphic to each other or not, One is with data and one is without data match

  1.  If ‘A’ Tree is structure wise mirror of other tree ‘B’ ( without its data values)
  2.  If ‘A’ Tree is exactly mirror of other tree ‘B’ (with of its data values

Algorithm for 1.

  • If any of the tree is null
    • Trees are not quasi isomorphic & return false
  • Check both trees tree1 and tree2
    • if tree1 and tree2 are null, traversal completed successfully.
      return true
  • Traverse Left subtree of tree1 and left subtree of tree2
  • Traverse Right subtree of tree1 and right subtree of tree2
    • If structures are identical, then return true
    • If trees are not identical, let us check one tree (or subtree) are mirror of other tree (subtree)
  • Traverse Left subtree of tree1 and right subtree of tree2
  • Traverse Right subtree of tree1 and left subtree of tree2
    • If structures are mirror structure, then return true
    • Else, return false

Sudo Code for 1&2.

bool isomorphic(struct treenode *treeone, struct treenode *treetwo)
{
    //if both tree null
    if (!treeone && !treetwo)
        return true;  
    // if one is null
    if((!treeone  ||  !treetwo))
        return false;
    // in case you want to check Data (case 2)
    if(treeone-data != treetwo->data)
        return false;
    return (
         (isomorphic(treeone->left, treetwo->left) 
          && isomorphic(treeone->right, treetwo->right)) || 
         (isomorphic(treeone->left, treetwo->right) 
          && isomorphic(treeone->right, treetwo->left))
         );
}

Working Code

// A C++ program to check if two given trees are isomorphic by gohired.in
#include <iostream>
using namespace std;

struct node
{
	int data;
	struct node* left;
	struct node* right;
};

bool isIsomorphic(node *treeone, node *treetwo)
{
    if (!treeone && !treetwo)
        return true;  
    if((!treeone  ||  !treetwo))
        return false;
   
        return (
                isIsomorphic(treeone->left, treetwo->right) 
                && isIsomorphic(treeone->right, treetwo->left)
                ||
                isIsomorphic(treeone->left, treetwo->left) 
                && isIsomorphic(treeone->right, treetwo->right) 
            );
}

node* newNode(int data)
{
	node* temp = new node;
	temp->data = data;
	temp->left = NULL;
	temp->right = NULL;

	return (temp);
}
int main()
{
	struct node *n1 = newNode(1);
    n1->left        = newNode(2);
    n1->right       = newNode(3);
    n1->left->left  = newNode(4);
    n1->left->right = newNode(5);
    n1->right->left  = newNode(6);
    n1->left->right->left = newNode(7);
    n1->left->right->right = newNode(8);
 
    struct node *n2 = newNode(1);
    n2->left         = newNode(3);
    n2->right        = newNode(2);
    n2->right->left   = newNode(4);
    n2->right->right   = newNode(5);
    n2->left->right   = newNode(6);
    n2->right->right->left = newNode(8);
    n2->right->right->right = newNode(9);

	if (isIsomorphic(n1, n2) == true)
	cout << "Yes";
	else
	cout << "No";

	return 0;
}

Similar Articles

Filed Under: Amazon Interview Question, Interview Questions, Microsoft Interview Questions, problem Tagged With: Binary Tree, tree

Reader Interactions

Primary Sidebar

Join WeekEnd Online/Offline Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

Join WeekEnd Online/Offline Batch from 4-April-2020

WhatsApp us

Secondary Sidebar

Custom Search

  • How I cracked AMAZON
  • LeetCode
  • Adobe
  • Amazon
  • Facebook
  • Microsoft
  • Hacker Earth
  • CSE Interview

Top Rated Questions

Find the smallest window in a string containing all characters of another string

VMWare Openings

How strtok() Works

Interfaces in C++ (Abstract Classes in C++)

Flipkart Set 1 On Campus with Answers

In Given LinkedList Divide LL in N Sub parts and delete first K nodes of each part

Find the element that appears once others appears thrice

Linked List V/S Binary Search Tree

Find shortest distances between every pair of vertices ( Dynamic Programming Floyd Warshall Algorithm)

Printing Longest Common Subsequence

strtok()

Code Chef PRGIFT Solution

Length of the longest substring without repeating characters

Reversal of LinkedList

Microsoft BING Interview Experience

Maximum occurred Smallest integer in n ranges

Stock Buy Sell to Maximize Profit

Find if two rectangles overlap

Printing intermediate Integers between one element & next element of array

Daughter’s Age VeryGood Puzzle

Knight Tour Problem (Graph – Breadth First Search)

Search element in a matrix with all rows and columns in sorted order

1014 Practice Question of New GRE – Princeton

building with N steps, we can take 1,2,3 steps calculate number of ways to reach at top of building

Count Possible Decodings of a given Digit Sequence

Practo Hiring Experience

Cisco Hiring Event 21st – 22nd Feb 2015

Print Power Set of a Set

Common Ancestor in a Binary Tree or Binary Search Tree

Flipkart SDET Interview Experience

Copyright © 2026 · Genesis Framework · WordPress · Log in