1+ #include  < bits/stdc++.h> 
2+ using  namespace  std ;  
3+  
4+ struct  Node  
5+ { 
6+  int  data; 
7+  struct  Node  *left, *right; 
8+ }; 
9+  
10+ Node *newNode (int  data) 
11+ { 
12+  Node *new_node = new  Node; 
13+  new_node->data  = data; 
14+  new_node->left  = new_node->right  = NULL ; 
15+  return  new_node; 
16+ } 
17+  
18+ /*  Given a binary tree, print its nodes in inorder*/ 
19+ void  inorder (Node * node) 
20+ { 
21+  if  (!node) 
22+  return ; 
23+ 
24+  inorder (node->left ); 
25+  printf (" %d " data ); 
26+  inorder (node->right );
27+  
28+ } 
29+  
30+ /*  Function to merge given two binary trees*/ 
31+ Node *MergeTrees (Node * t1, Node * t2) 
32+ { 
33+  if  (!t1) 
34+  return  t2; 
35+  if  (!t2) 
36+  return  t1; 
37+  t1->data  += t2->data ; 
38+  t1->left  = MergeTrees (t1->left , t2->left ); 
39+  t1->right  = MergeTrees (t1->right , t2->right ); 
40+  return  t1; 
41+ } 
42+  
43+ //  Driver code 
44+ int  main () 
45+ { 
46+ 
47+  Node *root1 = newNode (1 ); 
48+  root1->left  = newNode (2 ); 
49+  root1->right  = newNode (3 ); 
50+  root1->left ->left  = newNode (4 ); 
51+  root1->left ->right  = newNode (5 ); 
52+  root1->right ->right  = newNode (6 ); 
53+ 
54+  Node *root2 = newNode (4 ); 
55+  root2->left  = newNode (1 ); 
56+  root2->right  = newNode (7 ); 
57+  root2->left ->left  = newNode (3 ); 
58+  root2->right ->left  = newNode (2 ); 
59+  root2->right ->right  = newNode (6 ); 
60+  
61+  Node *root3 = MergeTrees (root1, root2); 
62+  printf (" The Merged Binary Tree is:\n " 
63+  inorder (root3); 
64+  return  0 ; 
65+ } 
0 commit comments