Sponsored
Sponsored
This approach utilizes recursion to traverse both trees simultaneously. If both node values are non-null, we sum them up as the new value and recursively merge their left and right children. If one node is null, we return the non-null node.
Time Complexity: O(n); Space Complexity: O(h), where n is the total number of nodes and h is the height of the tree.
1class TreeNode {
2 int val;
3 TreeNode left;
4 TreeNode right;
5 TreeNode(int x) { val = x; }
6}
7
8public class Solution {
9 public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
10 if (t1 == null) return t2;
11 if (t2 == null) return t1;
12 t1.val += t2.val;
13 t1.left = mergeTrees(t1.left, t2.left);
14 t1.right = mergeTrees(t1.right, t2.right);
15 return t1;
16 }
17}
This Java solution uses a recursive method that follows the same logic described above. It either returns the non-null node or merges the values and children recursively.
This approach uses an iterative method with a stack to simulate the recursive calls for merging the two binary trees. We traverse the trees using a stack and merge nodes at each level iteratively.
Time Complexity: O(n); Space Complexity: O(h), where n is the total number of nodes and h is the maximum height of the two trees.
1#
This C solution uses a stack to perform an iterative merge of the binary trees. We manage pairs of nodes to process, summing their values and pushing their children onto the stack for subsequent processing.