Unveiling the Approach: Merging Binary Trees
Step 1: The Simple Case - Merging Root Nodes
Before diving into the complexities of merging full-fledged binary trees with all their branches and leaves, let's start simple. We'll consider the most basic case: two trees each containing only a root node.
Here's the example we'll work through:
TEXT
1 1st Tree 2nd Tree Merged Tree
2 3 1 4
The Strategy for Merging Root Nodes
- Check for Empty Trees: First, ensure that neither of the root nodes is
null
. - Sum the Values: If both roots exist, sum their values to create a new root node for the merged tree.
- Create the Merged Root: Instantiate a new node with the sum as its value.
Code Snippet for Merging Root Nodes
Here's how you would implement these steps.
Great! We've successfully merged two single-node trees. But what happens when these trees have children?
xxxxxxxxxx
26
function Node(val) {
this.val = val;
this.left = this.right = null;
}
​
function mergeTrees(root1, root2) {
// Check for empty trees
if (!root1) return root2;
if (!root2) return root1;
​
// Sum the root nodes' values
let sum = root1.val + root2.val;
​
// Create the merged root
let mergedRoot = new Node(sum);
​
return mergedRoot;
}
​
// Create individual root nodes for 1st and 2nd trees
let root1 = new Node(3);
let root2 = new Node(1);
​
// Merge and get the new root
let mergedRoot = mergeTrees(root1, root2);
console.log(`Merged Root Value: ${mergedRoot.val}`); // Output should be 4
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment