剑指offer之简单题(三)

news/2024/12/4 22:56:39/

27.二叉树的镜像

完成一个函数,输入一个二叉树,该函数输出它的镜像。

 其实第一个想到的就是交换左右节点,想的很简单了,但是怎么交换呢?交换一个之后,剩下的怎么办?

其实呢,就是递归:递归就要进行回溯,交换的机制是从下到上进行交换的。那就进行递归,先递归到底层,然后再从底层进行回溯。

ps:感觉说了跟没说一样,说的我自己都不知道在说什么,如果有大佬愿意指点一下或总结一下我这次里先谢谢了!

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def mirrorTree(self, root: TreeNode) -> TreeNode:if not root:return rootroot.left, root.right = self.mirrorTree(self.right), self.mirrorTree(self.left)return root

28.对称的二叉树

实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

 上面刚写了一个二叉树的镜像,这不就简单了吗?判断二叉树和镜像树是否一样不就好了?那就试试。天真!判断两个树一样是用两个等号就可以的吗?要判断节点、结构是否一样的!

所以还得是递归!直接递归也不可行,毕竟还是跟镜像树不一样的。对称二叉树主要判断的是左右节点是否对称。

所以得有一个函数进行判断是否符合条件:

1.左右节点都为空则返回True

2.左节点为空,或右节点为空,或左右节点的值不等,返回False

3.前两个条件都不满足的话说明左右节点的值相等,那么进行下一次递归。这里需要注意的是判断对称,是判断左节点的左节点与右节点的右节点的值是否相等,左节点的右节点与右节点的左节点是否相等。还有一点就是,这里的递归是没有回溯的。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def isSymmetric(self, root: TreeNode) -> bool:def recur(L, R):if not L and not R:return Trueif not L or not R or L.val != R.val:return Falsereturn recur(L.left, R.right) and recur(L.right, R.left)if root:return recur(root.left, root.right)else:return True


http://www.ppmy.cn/news/56144.html

相关文章

轻叶H5营销单页,让你的营销更加清爽高效

网络营销就是营销企业品牌形象、产品信息发布、优惠促销活动,最终目的就是争抢流量和客户。现在为了吸引流量,各种营销方式、广告玩法层出不穷,成本投入大,带来的转化不一定好。今天,我们要来讲一讲H5营销单页。 H5营销…

汇编语言学习笔记一

常用寄存器类型 通用寄存器 AX,BX,CX,DX,这四个寄存器都是16位的 他们也可以拆分为2个8位的寄存器,如AX可以拆分为AH和AL两个8位的寄存器,其它三个也可以如此。 通用寄存器的使用比较简单,如 …

【算法】求最短路径算法

文章目录 一、迪杰斯特拉算法1.1 算法介绍1.2 算法步骤1.3 应用场景 二、弗洛伊德算法2.1 算法介绍2.2 算法步骤2.3 应用场景 一、迪杰斯特拉算法 1.1 算法介绍 从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短…

IGH EtherCAT主站应用层代码开发:控制驱动电机

1、安装IGH EtherCAT主站 Ubuntu18.04环境下安装igH EtherCAT Master 2、查询从站配置信息 连接从站通过网线连接主站与从站 启动主站打开终端,输入: sudo /etc/init.d/ethercat star 显示Starting EtherCAT master 1.5.2 done则说明成功。 查询从站列表终端输入: eth…

ARN (Yet Another Resource Negotiator)-HA (High Availability)

HA机制 YARN (Yet Another Resource Negotiator)是Hadoop的资源管理器,它负责管理集群中的资源分配和任务调度。在YARN中,HA (High Availability)机制是指在主节点出现故障时,能够自动地将任务管理权转移至备用节点上,从而保证系…

数据库预科与增删查改(CURD)

一、预科 1.分类 分为关系型数据库和非关系型数据库 关系型数据库对于数据库中数据的格式,要求比较严格(使用硬盘来存储数据) 非关系型数据库则相对不太严格,因此其功能相对于关系型数据库少一些,但是性能更高,因此更适应当前大数据分布式时代 关系型数据库的代表软件有Or…

常用图标(icon)css下载

1、演示图例(icon1.css)[24*18] 2、演示图例(icon2.css)[24*24] 3、演示图例(icon3.css)[24*24] 4、演示图例(icon4.css)[24*18] 5、演示图例(icon5.css)[26*…

【计算机网络】127.0.0.1、0.0.0.0、localhost地址是什么?

目录 0.0.0.0是什么?127.0.0.1是什么?用途 localhost是什么?总结 0.0.0.0是什么? IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。 在服务器中,0.0.0.0指的是本机上的所有I…