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的Django框架实现事务交易管理的教程
Apr 20 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
pytorch中获取模型input/output shape实例
Dec 30 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python实现猜单词游戏
May 22 Python
python3 hdf5文件 遍历代码
May 19 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
常用的Python代码调试工具总结
Jun 23 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根据年月获取季度的方法
2014/03/31 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
WordPress网站性能优化指南
2015/11/18 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python Django 命名空间模式的实现
2019/08/09 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
幼儿园中秋节活动方案2013
2014/01/29 职场文书
高考备战决心书
2014/03/11 职场文书
留学经费担保书
2014/05/12 职场文书
机关作风建设整改方案
2014/10/27 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
使用Python开发冰球小游戏
2022/04/30 Python