Задача. Слияние двух бинарных деревьев



Сложность: Лёгкая



Условие задачи: Даны два бинарных дерева, необходимо осуществить их наложение друг на друга и вывод результатов в новом дереве.



Примечание: Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.



Пример:



Ввод:
root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]

Вывод:
[3,4,5,5,4,null,7]



Ввод:
root1 = [1], root2 = [1,2]

Вывод:
[2,2]



* Определение для узла двоичного дерева.

* public class TreeNode {

* public int val;

* public TreeNode left;

* public TreeNode right;

* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {

* this.val = val;

* this.left = left;

* this.right = right;

* }

* }

*/

public class Solution {

public TreeNode MergeTrees(TreeNode root1, TreeNode root2)

{

if (root1 == null & root2 == null) return null;

if (root1 == null) return root2;

if (root2 == null) return root1;



var left = MergeTrees(root1.left, root2.left);

var right = MergeTrees(root1.right, root2.right);



if (root1.left != left) root1.left = left;

if (root1.right != right) root1.right = right;



root1.val += root2.val;



return root1;

}

}




Пишите свое мнение в комментариях👇



@csharp_ci