Python3 合并二叉树的实现


Posted in Python onSeptember 30, 2019

题目要求:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。

解决思想:遇到二叉树,首先想到的是递归实现。为了降低空间消耗,两个二叉树合并为一个时,不再新建树。初始给定两个树的当前结点(根结点)t1、t2,若t1和t2节点均不为空,t1节点值更新为t1+t2的值,递归遍历当前节点的左子树和右子树;如果任意其中一个节点为空,且不全为空,返回非空节点;如果两节点均为空,返回None。

直接上代码( ̄? ̄):

# Definition for a binary tree node.
# class TreeNode:
#   def __init__(self, x):
#     self.val = x
#     self.left = None
#     self.right = None

class Solution:
  def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
    if t1!=None and t2!=None:
      t1.val+=t2.val
      t1.left = self.mergeTrees(t1.left,t2.left)
      t1.right = self.mergeTrees(t1.right,t2.right)
    elif t1==None and t2!=None:
      return t2
    elif t1!=None and t2==None:
      return t1
    else:
      return None
    return t1

时间空间消耗:

Python3 合并二叉树的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python静态方法实例
Jan 14 Python
Python NumPy库安装使用笔记
May 18 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
django和flask哪个值得研究学习
Jul 31 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 #Python
softmax及python实现过程解析
Sep 30 #Python
python根据时间获取周数代码实例
Sep 30 #Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 #Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 #Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 #Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 #Python
You might like
967 个函式
2006/10/09 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python fileinput模块使用实例
2015/05/28 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python assert语句的简单使用示例
2019/07/28 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
大学新生军训感言
2014/02/25 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
离职感谢信怎么写
2015/01/22 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang
MySQL深分页问题解决思路
2022/12/24 MySQL