当前位置:网站首页>二叉树的合并[C]
二叉树的合并[C]
2022-08-03 05:10:00 【北北的巷栀酒】
给定两个根结点root1和root2,二叉树的合并目的是将两个树合成一个数,合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。(题目来源于leetcode)
例子如下图:
输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
输出:[3,4,5,5,4,null,7]
树的结点定义如下:
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
很明显,合并可以通过递归来实现,C语言代码如下:
struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){
if(root1 == NULL) return root2; //树一定要先判断是否为空,这里为空的同时也是返回的条件
if(root2 == NULL) return root1;
struct TreeNode* res = malloc(sizeof(struct TreeNode)); //创建结点,一定要申请空间
res->val = root1->val + root2->val;
res->left = mergeTrees(root1->left, root2->left); //左结点递归即可
res->right = mergeTrees(root1->right, root2->right);
return res; //返回创建的新树的根结点
}
让我们来分析一下时间复杂度和空间复杂度,不妨令两棵原树的结点数是a和b,则很明显,时间复杂度是O(min(a,b)),空间复杂度取决于递归的栈深度,也是O(min(a,b)),这是因为递归的层数不会超过结点少的那棵树的结点树,当那棵树为一条链时会有最坏情况。
边栏推荐
- Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data
- NotImplementedError: file structure not yet supported
- 曲线特征----曲线弯曲程度的探究
- Business table analysis - balance system
- typescript47-函数之间的类型兼容性
- 3n+1问题
- dataframe插入一列
- 3. 无重复字符的最长子串
- js implements a bind function
- typescript42-readonly修饰符
猜你喜欢
随机推荐
Djiango第二次培训
Alienware上线首个数字时装AR试穿体验
1060 爱丁顿数 (25 分)
Flask Web 报错:
深度学习入门之GRU
UV decomposition of biotin - PEG2 - azide | CAS: 1192802-98-4 biotin connectors
网络流媒体下载的 10 种方法(以下载 Echo 音乐为例)
Benchmark 第一篇 了解Benchmark
-查找数-
数据分析 第一篇
idea使用@Autowired注解爆红原因及解决方法
web安全-SSTI模板注入漏洞
Get the Ip tool class
Kaggle 入门(Kaggle网站使用及项目复现)
阿凡提的难题
HarmonyOS应用开发培训第二次作业
1089 狼人杀-简单版 (20 分)
Junit
typescript46-函数之间的类型兼容性
-元素之和-