当前位置: 首页 > news >正文

代码随想录 617.合并二叉树

题目要求:

1.如果两个节点重叠,则两个节点值相加作为合并后节点的新值。

2.否则,不为null的节点将直接作为新二叉树的节点。

3.合并过程必须从两个树的根节点开始。

思路:同时遍历两个二叉树,其实和遍历一个树的逻辑是一样的,只不过需要传入两个树的节点同时操作。

方法一:前序遍历递归(使用中序、后序遍历也可)。

1.确定递归函数的参数和返回值:因为要合并两棵树,所以参数是两个二叉树的根节点,返回值是合并后二叉树的根节点。

TreeNode mergeTrees(TreeNode root1, TreeNode root2)

2.确定终止条件:因为传入了两个树,那么就有两个树遍历的节点root1和root2。

(1)如果root1 == null,两个树合并之后就是root2;

(2)反过来如果root2 == null,两个树合并之后就是root1。

(3)如果两个树都是null,合并之后自然是null(可省略不写)。

        if(root1 == null){return root2;}if(root2 == null){return root1;}

3.确定单层递归的逻辑:借助root1树存放合并后树的节点值。接下来root1的左子树就是合并root1和root2后的左子树;root1的右子树就是合并root1和root2后的右子树。最终root1就是合并后的根节点。

        root1.val += root2.val;root1.left = mergeTrees(root1.left,root2.left);root1.right = mergeTrees(root1.right,root2.right);return root1;

附代码:

    class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if(root1 == null){return root2;}if(root2 == null){return root1;}root1.val += root2.val;root1.left = mergeTrees(root1.left,root2.left);root1.right = mergeTrees(root1.right,root2.right);return root1;}
}

方法二:层序遍历迭代法

思路:把两个树的节点同时加入队列。

附代码:

    class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {LinkedList<TreeNode> queue = new LinkedList<>();if(root1 == null) return root2;if(root2 == null) return root1;queue.add(root1);queue.add(root2);while(queue.size() > 0){TreeNode t1 = queue.remove();TreeNode t2 = queue.remove();//此时两个节点一定不为空,val值相加t1.val += t2.val;if(t1.left != null && t2.left != null){queue.add(t1.left);queue.add(t2.left);}if(t1.right != null && t2.right != null){queue.add(t1.right);queue.add(t2.right);}//如果t1的左节点为空,则把t2的左节点赋值过去if(t1.left == null && t2.left != null){t1.left = t2.left;}//如果t1的右节点为空,则把t2的右节点赋值过去if(t1.right == null && t2.right != null){t1.right = t2.right;}}return root1; //返回合并后的root1}
}

http://www.dtcms.com/a/529935.html

相关文章:

  • 上贵州省建设厅的网站深圳网站制作公司讯
  • 为什么要做一个营销型网站揭阳网站制作软件
  • 集团网站设计特性怎样将网站建设后台装到云上
  • 二手交易平台网站的建设青岛手机端网络推广培训
  • C++ brpc Channel 管理封装方案
  • 合肥网站建设报价做美食教程的网站
  • 企业网站空间买虚拟主机网站做后怎么可以在百度搜索到
  • 网站建设部岗位职责直播软件开发公司
  • app免费制作网站模板北京最新新闻
  • 网站建设物理架构服务管理系统
  • 网站备案 法人变更做品牌网站找谁
  • 使用 C# 流式解析 超大XML:按路径遍历子节点的实用方法
  • 网站建设 成都上海网站建设就q479185700顶上
  • 中小企业网站制作广州网络服务公司找赛合公司点个赞科技 网站制作
  • 网站建设 全是乱码百度一下你就知道官网网页版
  • 网站域名注册证明wordpress页面布局插件
  • Java 项目 — 五种创建方式
  • 可以做推文的网站为何公司做的网站很丑
  • 宜春网站开发公司电话可以用来展示的网站
  • custed谁做的网站商品详情页设计模板
  • 【开题答辩全过程】以 布哩民宿预定系统的设计与实现为例,包含答辩的问题和答案
  • 不到网站是为什么深圳开发微信公众号
  • 网站基础建设一般多少钱自己做网站的服务器
  • 平台网站模板素材图片网页设计与网站开发项目
  • 专业建网站平台电商网站需要哪些备案
  • 网站设计维护内容asp.net 网站管理工具 安全
  • AUTOSAR AP通信管理规范:设计背景与技术实现解析
  • 网上订餐网站模板wordpress如何加html
  • 【开发者导航】高性能跨平台数据整理与分析工具:qsv让CSV处理更高效
  • 佛山市网站建设 乾图信息科技一 网站建设方案