using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Collections;
public
class
TreeNode
{
public
int
val;
public
TreeNode left;
public
TreeNode right;
public
TreeNode(
int
val)
{
this
.val = val;
this
.left =
null
;
this
.right =
null
;
}
}
public
class
GFG
{
public
static
List<
int
> MergeTrees(TreeNode root1,
TreeNode root2)
{
SortedDictionary<
int
,
int
> freqMap =
new
SortedDictionary<
int
,
int
>();
InorderTraversal(root1, freqMap);
InorderTraversal(root2, freqMap);
List<
int
> merged =
new
List<
int
>();
foreach
(
int
key
in
freqMap.Keys)
{
int
freq = freqMap[key];
for
(
int
i = 0; i < freq; i++)
{
merged.Add(key);
}
}
return
merged;
}
private
static
void
InorderTraversal(TreeNode root,
SortedDictionary<
int
,
int
> freqMap)
{
if
(root ==
null
)
{
return
;
}
InorderTraversal(root.left, freqMap);
if
(freqMap.ContainsKey(root.val))
{
freqMap[root.val]++;
}
else
{
freqMap[root.val] = 1;
}
InorderTraversal(root.right, freqMap);
}
public
static
void
Main(
string
[] args)
{
TreeNode root1 =
new
TreeNode(8);
root1.left =
new
TreeNode(2);
root1.right =
new
TreeNode(10);
root1.left.left =
new
TreeNode(1);
TreeNode root2 =
new
TreeNode(5);
root2.left =
new
TreeNode(3);
root2.right =
new
TreeNode(0);
List<
int
> merged = MergeTrees(root1, root2);
Console.WriteLine(
"{"
+
string
.Join(
", "
, merged)+
"}"
);
}
}