算法-二叉树合并

1. 合并二叉树

给定两个二叉树 root1 和 root2,将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 NULL 的节点将直接作为新二叉树的节点,LeetCode 原题

在这里插入图片描述

2. 解法

  1. 确定递归函数的参数和返回值
    要合并两个二叉树,参数至少是要传入两个二叉树的根节点,返回值就是合并之后二叉树的根节点
  2. 确定终止条件
    因为是传入了两个树,那么就有两个树遍历的节点 t1 和 t2,如果t1==NULL 了,两个树合并节点值就应该是 t2,反过来如果 t2 ==NULL,那么两个节点合并就是t1
  3. 确定单层递归的逻辑
    单层递归中,要把两棵树的元素加到一起,形成合并树节点。接下来合并树的左子树是:合并 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;
    }

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/130401135