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利用hook技术破解https的实例代码
Mar 25 Python
简单谈谈Python中的json与pickle
Jul 19 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
pandas Dataframe行列读取的实例
Jun 08 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
python实现发送form-data数据的方法详解
Sep 27 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
Python 动态变量名定义与调用方法
Feb 09 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 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集成FCK的函数代码
2008/09/27 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP6新特性分析
2016/03/03 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
php服务器的系统详解
2019/10/12 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
vuex 的简单使用
2018/03/22 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python中的choice()方法使用详解
2015/05/15 Python
Django在win10下的安装并创建工程
2017/11/20 Python
python随机数分布random测试
2018/08/27 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
python命令 -u参数用法解析
2019/10/24 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
当当网软件测试笔试题
2015/11/24 面试题
幼儿园健康教育方案
2014/06/14 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
Python图片检索之以图搜图
2021/05/31 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers