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利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
PyQt5显示GIF图片的方法
Jun 17 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
Python如何实现强制数据类型转换
Nov 22 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
python logging.info在终端没输出的解决
May 12 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
Python基础之pandas数据合并
Apr 27 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
javascript 写类方式之十
2009/07/05 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
django 修改server端口号的方法
2018/05/14 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Python autoescape标签用法解析
2020/01/17 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
python的flask框架难学吗
2020/07/31 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
个人求职简历的自我评价范文
2013/10/09 职场文书
户外婚礼策划方案
2014/02/08 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
推荐信格式要求
2014/05/09 职场文书
空气的环保标语
2014/06/12 职场文书
幸福中国演讲稿
2014/09/12 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
质量整改通知单
2015/04/21 职场文书