1. 合并二叉树
给定两个二叉树 root1 和 root2,将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 NULL 的节点将直接作为新二叉树的节点,LeetCode 原题
2. 解法
- 确定递归函数的参数和返回值
要合并两个二叉树,参数至少是要传入两个二叉树的根节点,返回值就是合并之后二叉树的根节点- 确定终止条件
因为是传入了两个树,那么就有两个树遍历的节点 t1 和 t2,如果t1==NULL 了,两个树合并节点值就应该是 t2,反过来如果 t2 ==NULL,那么两个节点合并就是t1- 确定单层递归的逻辑
单层递归中,要把两棵树的元素加到一起,形成合并树节点。接下来合并树的左子树是:合并 t1左子树 t2左子树之后的左子树。合并树的右子树是:合并 t1右子树 t2右子树之后的右子树
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (null == root1) return root2;
if (null == root2) return root1;
// 新建树节点
TreeNode merged = new TreeNode(root1.val + root2.val);
merged.left = mergeTrees(root1.left, root2.left);
merged.right = mergeTrees(root1.right, root2.right);
return merged;
}