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之??碌某?? target=
Sep 12 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
python select.select模块通信全过程解析
Sep 20 Python
K-近邻算法的python实现代码分享
Dec 09 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
PyQt5每天必学之进度条效果
Apr 19 Python
Python返回数组/List长度的实例
Jun 23 Python
基于Python中求和函数sum的用法详解
Jun 28 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
python函数超时自动退出的实操方法
Dec 28 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
Terran兵种介绍
2020/03/14 星际争霸
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
移动节点的jquery代码
2014/01/13 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python交换变量
2008/09/06 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
编程输出如下图形
2013/11/24 面试题
后勤岗位职责
2013/11/26 职场文书
求职信需要的五点内容
2014/02/01 职场文书
家长给学校的建议书
2014/05/15 职场文书
投标诚信承诺书
2014/05/26 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
村官个人总结范文
2015/03/03 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
python基础之爬虫入门
2021/05/10 Python