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网络爬虫采集联想词示例
Feb 11 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
python3调用R的示例代码
Feb 23 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
Python实现按中文排序的方法示例
Apr 25 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
Python import与from import使用及区别介绍
Sep 06 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
python 如何上传包到pypi
Dec 24 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
php实现天干地支计算器示例
2014/03/14 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
Python3.x中自定义比较函数
2015/04/24 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
教师职位说明书
2014/07/29 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
运动会100米广播稿
2015/08/19 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS