题意:

给定两棵树,将两棵树合并成一颗树

输入

	Tree 1                     Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
输出
合并的树
3
/ \
4 5
/ \ \
5 4 7 方法1不需要提供额外内存,但是时间居然很长
 /**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
if t1 == nil && t2 == nil{
return nil
}
if t1 != nil && t2 == nil{
return t1
}
if t1 == nil && t2 != nil{
return t2
}
if t1 != nil && t2 != nil{
t1.Val += t2.Val
t1.Left = mergeTrees(t1.Left, t2.Left);
t1.Right = mergeTrees(t1.Right, t2.Right);
}
return t1;
}

方法2需要提供额外内存,但是时间居然比方法1少,简直不可思议

 /**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func newTreeNode() *TreeNode{
return &TreeNode{
}
} func dfs(m **TreeNode, t *TreeNode){ if t == nil {
return ;
} if (*m) == nil{
(*m) = newTreeNode()
} (*m).Val += t.Val
dfs(&((*m).Left), t.Left)
dfs(&((*m).Right), t.Right) } func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
if t1 == nil && t2 == nil {
return nil
} m := newTreeNode() dfs(&m, t1);
dfs(&m, t2); return m;
}

最新文章

  1. Effective java笔记(八),异常
  2. Struts2理解--动态方法和method属性及通配符_默认Action
  3. 关于Servlet手动配置web.xml部分代码
  4. uva oj 567 - Risk(Floyd算法)
  5. (编辑器)Jquery-EasyUI集合Kindeditor编辑器
  6. rpc rmi http
  7. gulp.spritesmith修改px为rem单位
  8. Linux查看端口使用状态及启动
  9. LA 2038
  10. linux/shell sort命令
  11. asp.net中Get请求和Post请求
  12. Fragment的生命周期和Activity之间的通信以及使用
  13. 使用Javascript限制文本框只允许输入数字
  14. zepto源码研究 - zepto.js - 6(模板方法)
  15. 莫比乌斯反演题目泛做(为了对应smz的课件)
  16. jquery与ajax的应用
  17. 移动小bug
  18. MFC实现为窗体添加的背景图片
  19. SpringMVC中的异常处理
  20. J2EE_Maven_POM文件配置的详解(转)

热门文章

  1. [转载]Surging 分布式微服务框架使用入门
  2. C++11实现placeholder
  3. Codeforces Round #Pi (Div. 2) B Berland National Library
  4. swift项目第一天:环境部署
  5. [TypeStyle] Compose CSS classes using TypeStyle
  6. 从Set里面取出有序的记录
  7. 使用Perl分割文件
  8. [SCSS] Loop Over Data with the SCSS @each Control Directive
  9. LUA整合进MFC代码
  10. MySQL复制格式小结