B32 题解 | #合并二叉树#
合并二叉树
https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759
解题心得:
二叉树的合并,我一开始主要是不知道怎么合并,特别是有如下一些困惑:
1、两颗树都有的节点,如何创建再填回去?
答:new TreeNode之后,把
2、一颗树有,另一个颗树没有的节点如何接起来?
3、如何返回最终的头节点?
解题思路:
本质上,还是二叉树的前序遍历,如下对比,就知道了
本题的前序二叉树遍历:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param t1 TreeNode类 * @param t2 TreeNode类 * @return TreeNode类 */ public TreeNode mergeTrees (TreeNode t1, TreeNode t2) { // 一边有一边没有,或者都没有的,都直接返回 if(t1 == null) { return t2; } if(t2 == null) { return t1; } // 双方都有的节点,创建一个新的返回 TreeNode node = new TreeNode(t1.val + t2.val); // 创建的新节点left、right,合并用两颗树的当前节点的left、right子节点再合并 node.left = mergeTrees(t1.left, t2.left); node.right = mergeTrees(t1.right, t2.right); return node; } }