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读取图片EXIF信息类库介绍和使用实例
Jul 10 Python
在Django的上下文中设置变量的方法
Jul 20 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Python 项目转化为so文件实例
Dec 23 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
Python实现分数序列求和
Feb 25 Python
Python如何用filter函数筛选数据
Mar 05 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
如何在向量化NumPy数组上进行移动窗口
May 18 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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源代码安装常见错误与解决办法分享
2013/05/28 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
Python类定义和类继承详解
2015/05/08 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
给我一面国旗 python帮你实现
2019/09/30 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
新闻学毕业生自荐信
2013/11/15 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
工作简历自我评价
2015/03/11 职场文书
部队2015年终工作总结
2015/04/02 职场文书
单位政审意见范文
2015/06/04 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS