Skip to content

Commit a76d975

Browse files
authored
Merge pull request ephremdeme#251 from nikhil3198/master
cpp program to merge 2 binary trees using node sum
2 parents 92c6f86 + 2c174ea commit a76d975

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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 ", node->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

Comments
 (0)