LeetCode 617:合并二叉树

导读:本篇文章讲解 LeetCode 617:合并二叉树,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

合并二叉树

题目:
在这里插入图片描述

思路

两个二叉树要合并为一个,即构造二叉树 !
传入参数为两个root,返回的是一个root !
要从根节点开始合并,自顶向下,即使用前序遍历。

递归三步曲:

  1. 参数是2个二叉树的根节点,返回值是合并之后新的根节点
  2. 确定终止条件:
    如果root1 为null 了,两个树合并就应该是 root2 (如果root2也为null即返回 root=null)。
    反过来如果root2 == null,那么两个数合并就是root1,
    即只要任一方为null,则无需构造新节点root,直接返回不为null的节点
  3. 单层逻辑即用root1和root2的值构造新root,让递归构造左右子节点

注意
如果一边为null一边不为null,则直接返回不为null的节点,而不需要重新构建root !只有两边都不为null才构建root !

Java实现:

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        // 即构造一个新二叉树
        return mer(root1,root2);
    }

// 传入2个节点,返回1个新节点
    private TreeNode mer(TreeNode root1,TreeNode root2){
        // 终止条件
        if(root1==null && root2==null){
            return null; // 也可不写
        } 
        if(root1==null){ // 传2  返1
            return root2; // 无需构造新节点
        }
        if(root2==null){
            return root1; // 无需构造新节点
        }

        // 构造root
        TreeNode root=new TreeNode(root1.val+root2.val);
        root.left=mer(root1.left,root2.left);
        root.right=mer(root1.right,root2.right);
        return root;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89317.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!