namespace _617._Merge_Two_Binary_Trees; internal class Program { static void Main(string[] args) { TreeNode root1 = new TreeNode(1); root1.left = new TreeNode(3) { left = new TreeNode(5) }; root1.right = new TreeNode(2); TreeNode root2 = new TreeNode(2); root2.left = new TreeNode(1) { right = new TreeNode(4) }; root2.right = new TreeNode(3) { right = new TreeNode(7) }; var res = new Write().LevelOrder(new Solution().MergeTrees(root1, root2)!); Console.WriteLine($"\nOutput"); foreach (var row in res) Console.WriteLine(String.Join(" ", row)); } public class Write { public IList> LevelOrder(TreeNode root) { List> output = new List>(); RecursiveTraversal(output, new List() { root }); return output; } private void RecursiveTraversal(List> output, List curLevel) { if (curLevel.Count == 0) return; List levelValues = new List(); foreach (var n in curLevel) { if (n == null) continue; levelValues.Add(n.val); } if (levelValues.Count == 0) return; output.Add(levelValues); List nextLevel = new List(); foreach (var n in curLevel) { if (n == null) continue; if (n.left != null) nextLevel.Add(n.left); if (n.right != null) nextLevel.Add(n.right); } RecursiveTraversal(output, nextLevel); } } }