leetcode617
这道题想了很久,并没有掌握思想,写了很多,也没有解决。先贴出思考的过程。
class Solution {
public:
vector<TreeNode> v1;
vector<TreeNode> v2;
queue<TreeNode> Q1;
queue<TreeNode> Q2;
void FloorTree(TreeNode tree, int type)
{
TreeNode node = TreeNode(tree.val);
node.left = tree.left;
node.right = tree.right;
if (type == )
{
Q1.push(node);
while (!Q1.empty())
{
TreeNode livenode = TreeNode();
livenode = Q1.front();
Q1.pop();
v1.push_back(livenode);
if (&livenode != NULL && (livenode.left != NULL || livenode.right != NULL))
{
if (livenode.left != NULL)
{
Q1.push(*livenode.left);
}
else
{
TreeNode node = TreeNode();
Q1.push(node);
}
if (livenode.right != NULL)
{
Q1.push(*livenode.right);
}
else
{
TreeNode node = TreeNode();
Q1.push(node);
}
}
}
}
else
{
Q2.push(node);
while (!Q2.empty())
{
TreeNode livenode = TreeNode();
livenode = Q2.front();
Q2.pop();
v2.push_back(livenode);
if (&livenode != NULL && (livenode.left != NULL || livenode.right != NULL))
{
if (livenode.left != NULL)
{
Q2.push(*livenode.left);
}
else
{
TreeNode node = TreeNode();
Q2.push(node);
}
if (livenode.right != NULL)
{
Q2.push(*livenode.right);
}
else
{
TreeNode node = TreeNode();
Q2.push(node);
}
}
}
}
}
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
FloorTree(*t1, );
FloorTree(*t2, );
int len1 = v1.size();
int len2 = v2.size();
vector<TreeNode> V;
if (len1 <= len2)
{
for (int i = ; i < len1; i++)
{
TreeNode t1 = v1[i];
TreeNode t2 = v2[i];
t1.val += t2.val;
V.push_back(t1);
}
for (int i = len1; i < len2; i++)
{
TreeNode t = v2[i];
V.push_back(t);
}
}
else
{
for (int i = ; i < len2; i++)
{
TreeNode t1 = v1[i];
TreeNode t2 = v2[i];
t2.val += t1.val;
V.push_back(t2);
}
for (int i = len2; i < len1; i++)
{
TreeNode t = v1[i];
V.push_back(t);
}
}
for (int i = ; i < V.size(); i++)
{
}
TreeNode* N = NULL;
return N;
}
};
下面列出正确的解法。
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if (t1 == NULL)return t2;
if (t2 == NULL)return t1;
t1->val += t2->val;
t1->left = mergeTrees(t1->left, t2->left);
t1->right = mergeTrees(t1->right, t2->right);
return t1;
}
补充一个python的实现,和上面的C++的思路基本一样,只是我个人感觉更容易理解一些:
class Solution:
def mergeTrees(self, t1: 'TreeNode', t2: 'TreeNode') -> 'TreeNode':
if t1!=None or t2!=None:
if t1==None:
t1 = TreeNode(0)
if t2==None:
t2 = TreeNode(0)
t = TreeNode(0)
t.val = t1.val + t2.val
t.left = self.mergeTrees(t1.left,t2.left)
t.right = self.mergeTrees(t1.right,t2.right)
return t return None
leetcode617的更多相关文章
- [Swift]LeetCode617. 合并二叉树 | Merge Two Binary Trees
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of t ...
- Leetcode617.Merge Two Binary Trees合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 ...
- leetcode617 Merge Two Binary Trees
""" Given two binary trees and imagine that when you put one of them to cover the oth ...
- LeetCode617. 合并二叉树
题目 1 class Solution { 2 public: 3 TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { 4 if(!t1 && ...
- LeetCode 617. 合并二叉树(Merge Two Binary Trees)
617. 合并二叉树 617. Merge Two Binary Trees 题目描述 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新 ...
- leetcode_二叉树篇_python
主要是深度遍历和层序遍历的递归和迭代写法. 另外注意:因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中). 所有题目首先考虑root否是空.有的 ...
- LeetCode通关:连刷三十九道二叉树,刷疯了!
分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/youngyangyang04/leetcode-master 大家好,我是拿输出博客来督促自己刷题的老三,这一节我们 ...
随机推荐
- Problem A: 平面上的点和线——Point类、Line类 (I)
Description 在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段.现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作. 根据“append ...
- react 调用webIm
记录下遇到的问题,之前引用腾讯云的webim,一直出错,现在改好了, 引用了, 以上是在public下的index.html引用, 但是在子模块console.log(webim);会报这个错 解决也 ...
- 基于Verilog的简单FIFO读写实验
一.模块框图及基本思路 fifo_ip:ISE生成的IP fifo_control:在fifo未满情况下不断写入递增的四位数,每隔1s读出一个数据驱动Led显示 fifo_top:前两个模块的组合 二 ...
- «面向对象程序设计(java)»第三周学习总结 周强 201771010141
实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利用已 ...
- jQuery-1.样式篇---属性与样式
jQuery的属性与样式之.attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.如:在img元素中,src就是元素的特性,用来标 ...
- apache kylin总结
去年12月挖的坑,今天找时间填上.update:20190119 一.kylin架构 核心是预计算,在此架构上做了一些优化.计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速 ...
- 文本对齐方式(text-align)
text-align 设置元素内文本的水平对齐方式. 属性值:left.right.center.justify 注:该属性对块级元素设置有效.
- Python全栈之路----函数进阶----装饰器
Python之路,Day4 - Python基础4 (new版) 装饰器 user_status = False #用户登录后改为True def login(func): #传入想调用的函数名 de ...
- alpha冲刺(3/10)
前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 制定计划 问题困扰: 前后端的交互沟通有点缺失,以至后端进度很慢,需 ...
- python中str函数isdigit、isdecimal、isnumeric的区别
num = "1" #unicodenum.isdigit() # Truenum.isdecimal() # Truenum.isnumeric() # True num = & ...