这个题目不难,能够想到使用递归的方法去解决,最好的方法不是新建一棵树,而是把所有的改变都放在一棵树上。此处我将合并后的改变都放在了树t1
上了。两棵树同时开始并按照相同的方式遍历,当两个根节点都不为null
时,就将两个根节点的值加到树t1
上,然后递归合并两个根节点的左子树和右子树。合并完后可能会出现有一个根节点的左子树或右子树为null
的情况,此时就要进行判断,并调整。调整策略看代码注释。
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null) //如果t1为null,则直接返回t2
return t2;