
About the author
Mallikarjuna Mallisetty
General programming
Mallikarjuna shares practical programming tutorials and foundational concepts designed to help developers learn by building and experimenting.
View LinkedIn profile ↗#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = node->right = NULL;
return node;
}
bool isIsomorphic(TreeNode* root1, TreeNode* root2) {
if (!root1 && !root2) return true;
if (!root1 || !root2) return false;
if (root1->val != root2->val) return false;
return (isIsomorphic(root1->left, root2->left) && isIsomorphic(root1->right, root2->right)) ||
(isIsomorphic(root1->left, root2->right) && isIsomorphic(root1->right, root2->left));
}
int main() {
TreeNode* tree1 = createNode(1);
tree1->left = createNode(2);
tree1->right = createNode(3);
tree1->left->left = createNode(4);
tree1->right->right = createNode(5);
TreeNode* tree2 = createNode(1);
tree2->left = createNode(3);
tree2->right = createNode(2);
tree2->left->left = createNode(5);
tree2->right->right = createNode(4);
if (isIsomorphic(tree1, tree2))
printf("Trees are isomorphic.\n");
else
printf("Trees are not isomorphic.\n");
return 0;
}