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

6.15合并二叉树(LC617-E)

算法:

前序、中序、后序都可以,这道题正常逻辑一般都是用前序

正确代码:

这里就是在root1这颗树上改的,也可以新建一个树。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
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;}
}

时间空间复杂度:

时间复杂度分析

  • 在每个节点上,只进行了常数时间的操作,比如节点值的相加和指针的赋值。因此,每个节点的操作时间复杂度为 O(1)。
  • 在最坏情况下,需要遍历两棵树的所有节点。因此,整个合并过程的时间复杂度为O(n),其中 n 是两棵树中节点的总数。

空间复杂度分析

  • 递归调用的深度最坏情况下为树的高度,因此空间复杂度为O(ℎ),其中 ℎ 是树的高度。
  • 在最坏情况下,如果树是完全不平衡的,高度可以达到 n,其中 n 是树中节点的总数。因此,空间复杂度为O(n)。

因此,该算法的时间复杂度为O(n),空间复杂度为O(n)。

http://www.lryc.cn/news/246353.html

相关文章:

  • 百度智能小程序系统源码+关键词排名优化 附带完整的搭建教程
  • 2019年11月7日 Go生态洞察:Go Modules v2及更高版本
  • vue3通过provide和inject实现多层级组件通信
  • 【Java学习笔记】72 - 满汉楼 - 餐饮管理系统
  • 【我的创作纪念日】
  • 车载通信架构 —— 传统车内通信网络MOST总线(光纤传输、专精多媒体)
  • 使用Pytorch从零开始构建Energy-based Model
  • 基于C#实现梳排序
  • 盘点72个Android系统源码安卓爱好者不容错过
  • nodejs+vue+elementui足球篮球联赛系统
  • 18.Oracle的过程和函数
  • A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1]
  • C#中openFileDialog控件的使用方法
  • 多线程04 死锁,线程可见性
  • java中文转拼音(去除音调)
  • [Android]常见的数据传递方式
  • <蓝桥杯软件赛>零基础备赛20周--第7周--栈和二叉树
  • 探究Kafka原理-7.exactly once semantics 和 性能测试
  • 【密码学引论】序列密码
  • 知识变现的未来:解析知识付费系统的核心
  • 【Linux基础】Linux常见指令总结及周边小知识
  • 【Android知识笔记】性能优化专题(五)
  • Java基础之泛型
  • WPF实战项目十五(客户端):RestSharp的使用
  • C语言基础篇5:指针(二)
  • 「Verilog学习笔记」非整数倍数据位宽转换8to12
  • Qt_一个由单例引发的崩溃
  • P8A004-系统加固-磁盘访问权限
  • 数智赋能 锦江汽车携手苏州金龙打造高质量盛会服务
  • kolla-ansible 部署OpenStack云计算平台