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脚本操作文件的小示例分享
Aug 27 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python网络编程 Python套接字编程
Sep 13 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
python验证码识别实例代码
Feb 03 Python
python使用锁访问共享变量实例解析
Feb 08 Python
Sanic框架安装与简单入门示例
Jul 16 Python
python pyheatmap包绘制热力图
Nov 09 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
php 分页函数multi() discuz
2009/06/21 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python版DDOS攻击脚本
2019/06/12 Python
python如何从键盘获取输入实例
2020/06/18 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
高中自我鉴定
2013/12/20 职场文书
总经理秘书工作职责
2013/12/26 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
2019年工作总结范文
2019/05/21 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python