Python对称的二叉树多种思路实现方法


Posted in Python onFebruary 28, 2020

对称二叉树的含义非常容易理解,左右子树关于根节点对称,具体来讲,对于一颗对称二叉树的每一颗子树,以穿过根节点的直线为对称轴,左边子树的左节点=右边子树的右节点,左边子树的右节点=左边子树的左节点。所以对称二叉树的定义是针对一棵树,而判断的操作是针对节点,这时可以采取由上到下的顺序,从根节点依次向下判断,只需要重复调用函数,不需要回溯。

题目:对称的二叉树题:

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的

解题思路一:先遍历右子节点再遍历左子节点。注意,我们必须把遍历二叉树时遇到的空指针考虑进来。

class Solution:
  def isSymmetrical(self, pRoot):
    # write code here
    return self.isSymmetricalCore(pRoot,pRoot)
  
  def isSymmetricalCore(self,pRoot1,pRoot2):
    if not pRoot1 and not pRoot2:
      return True
    if not pRoot1 or not pRoot2:
      return False
    if pRoot1.val != pRoot2.val:
      return False
    return self.isSymmetricalCore(pRoot1.left,pRoot2.right) and self.isSymmetricalCore(pRoot1.right,pRoot2.left)

解题思路二:迭代

def isSymmetric(self, root: 'TreeNode') -> 'bool':
  stack = root and [(root.left, root.right)]    
  while stack:
    p1, p2 = stack.pop()
    if not p1 and not p2: continue
    if not p1 or not p2: return False
    if p1.val != p2.val: return False
    stack.append((p1.left, p2.right))
    stack.append((p1.right, p2.left))
  return True

到此这篇关于Python对称的二叉树多种思路实现方法的文章就介绍到这了,更多相关Python对称的二叉树内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python continue语句用法实例
Mar 11 Python
决策树的python实现方法
Nov 18 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
Python 编程速成(推荐)
Apr 15 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
python获取字符串中的email
Mar 31 Python
Python自动化实战之接口请求的实现
May 30 Python
pycharm如何实现跨目录调用文件
Feb 28 #Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 #Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 #Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 #Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 #Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 #Python
You might like
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python @property装饰器原理解析
2020/01/22 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
python有几个版本
2020/06/17 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
七一建党节慰问信
2015/02/14 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
羊脂球读书笔记
2015/06/30 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS