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中method的参数传递过程
Apr 02 Python
Python编程之序列操作实例详解
Jul 22 Python
python内置数据类型之列表操作
Nov 12 Python
Python变量访问权限控制详解
Jun 29 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
pytorch之添加BN的实现
Jan 06 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Django程序的优化技巧
Apr 29 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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
Php+SqlServer实现分页显示
2006/10/09 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
PHP 错误处理机制
2015/07/06 PHP
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
vue实现放大镜效果
2020/09/17 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python异常的检测和处理方法
2018/10/26 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
python三方库之requests的快速上手
2019/03/04 Python
简单了解django文件下载方式
2020/02/10 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
Java如何获得ResultSet的总行数
2016/09/03 面试题
《姥姥的剪纸》教学反思
2014/02/25 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
还款承诺书范本
2015/01/20 职场文书