对称二叉树--深度遍历与广度遍历
问题来源:对称二叉树
问题描述:给定一个二叉树,检查它是否是镜像对称的。
比如,下面这个二叉树是镜像对称的;
1
/
2 2
/ \ /
3 4 4 3
而这个二叉树则不是镜像对称的。
1
/
2 2
\
3 3
例子:
输入:[1,2,2,3,4,4,3]
输出:True
思路:镜像对称意味着左子树与右子树镜像对称,在遍历左子树或者右子树过程中,我们比较镜像节点即可
1. 深度遍历
class Solution:def isSymmetric(self, root: TreeNode) -> bool:# 如果该二叉树为空树,则返回Trueif root == None: return True# 如果该二叉树非空,判断是否镜像def isMirror(root1, root2):if (root1 == None) and (root2 == None):return Trueif (root1 == None) or (root2 == None):return Falsereturn (root1.val == root2.val) and isMirror(root1.left, root2.right) and isMirror(root1.right, root2.left)return isMirror(root.left, root.right)
2. 广度遍历
class Solution:def isSymmetric(self, root: TreeNode) -> bool:# 二叉树为空if root == None: return True# 二叉树非空def isMirror(root1, root2):queue = []queue.append(root1)queue.append(root2)while queue:temp1 = queue.pop(0)temp2 = queue.pop(0)if (temp1 == None) and (temp2 == None):continueif (temp1 == None) or (temp2 == None):return Falseif temp1.val != temp2.val:return Falsequeue.append(temp1.left)queue.append(temp2.right)queue.append(temp1.right)queue.append(temp2.left)return Truereturn isMirror(root.left, root.right)
对称二叉树--深度遍历与广度遍历相关推荐
- 深度遍历 java_Java 实现深度遍历和广度遍历数及其应用
一.深度遍历和广度遍历原理及实现 1.深度优先 英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.对于上面的 ...
- 图的深度遍历和广度遍历
理论部分 图的深度遍历和广度遍历都不算很难像极了二叉树的前序遍历和层序遍历,如下面的图,可以用右边的邻接矩阵进行表示,假设以顶点0开始对整幅图进行遍历的话,两种遍历方式的思想如下: 1. 深度优先遍历 ...
- 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)
摘自:数据结构--无向图创建邻接表以及深度遍历.广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinese ...
- python来进行图的深度遍历和广度遍历
python来进行图的深度遍历和广度遍历 # -*- coding: utf-8 -*- """ Created on Sat Sep 14 18:01:27 2019@ ...
- 图的深度遍历和广度遍历算法
图的深度遍历和广度遍历算法 图的深度遍历可以简单理解为一条道走到黑,首先访问图中任一起始顶点v,再访问与v顶点邻接且未被访问过的顶点w1,再访问与w1邻接且未被访问过的顶点w2,重复上述操作,若不能继 ...
- js中树形结构的深度遍历与广度遍历
树形结构的深度遍历与广度遍历 定义 深度遍历:一个树形结构中,由一个数据分支全部遍历完才去遍历另外一个分支,直至全部数据遍历完成. 广度遍历:先遍历最外层的分支数据,然后一层一层的进行深入遍历,直至全 ...
- 二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))
本文章为结合leetcode题目以及公众号"代码随想录"的文章所做的笔记! 感觉代码随想录的题目整理真的很好,比自己盲目刷题好很多. 目录 1.二叉树小记 1.满二叉树与完全二叉树 ...
- 【数据结构】图的深度遍历与广度遍历
图是一种常见的数据格式,它的遍历主要分为两种: 深度优先遍历(DFS):类似于二叉树的前序前序遍历 广度优先遍历(BFS):类似于二叉树的层次遍历 一.出度与入度 在讲图的遍历之前,我们需要先了解图的 ...
- 深度遍历 java_java 图论一 深度遍历和广度遍历
图对建模很有帮助. 图的基本知识: Java实现图的两种方法 1邻接矩阵 邻接矩阵是用二维数据,使用1代表节点间有边,如下表格: A B C D A 0 1 1 1 B 1 0 0 1 C 1 0 0 ...
最新文章
- 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 )
- “约见”面试官系列之常见面试题之第五十四篇之语义化标签(建议收藏)
- php暂停循环,在特定数量的递归循环后,PHP停止执行
- Quartz业务类无法注入Spring对象问题
- golang | 使用goroutine和channel实现一个计算int64随机数各位数和的程序。
- IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
- 字符编码在python中的处理_python 字符编码处理问题总结
- mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作...
- 快速傅里叶变换FFT(一维)
- Smart200控制台达B2伺服做点动回原点和绝对定位等一些列动作,程序由SmartV2.4版本编写
- 微信App支付接入步骤支付中前后端交互流程
- 数据库优化相关面试题
- java生成二维码图片
- Macsome Tidal Music Downloader for Mac(Tidal音乐下载器)
- WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以.......
- 北京化工大学计算机考研资料汇总
- 如何编程阶梯形c语言,阶梯式C语言程序设计实验指导书.doc
- 快速检查局域网内网络延迟
- 电脑桌面一计算机打不开怎么办,电脑桌面什么都打不开怎么办
- GAIL(Imitating driver behavior with generative adverarial networks)