Leetcode 101. 对称二叉树

题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]

输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]

输出:false

思路:

对称二叉树:若为对称二叉树,则一定有:

算法流程:

函数 isSymmetric(root) :

若根节点 root 为空,则直接返回 true。 返回值: 即 recur(root.left,root.right) ;

函数 recur(L, R) :

终止条件: 当 L 和 R 同时越过叶节点: 此树从顶至底的节点都对称,因此返回 true 。

当 L 或 R中只有一个越过叶节点: 此树不对称,因此返回 false 。

当节点 L 值!= 节点 R 值: 此树不对称,因此返回 false。

递推工作: 判断两节点 L.left 和 R.right 是否对称,即 recur(L.left, R.right) 。

判断两节点 L.right 和 R.left 是否对称,即recur(L.right, R.left) 。

返回值: 两对节点都对称时,才是对称树,因此用与逻辑符 && 连接。

python:

python 复制代码
class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        def recur(L,R):
            if not L and not R:
                return True
            if not L or not R or L.val!=R.val:
                return False
            # 两边节点都对称时,才是对称树
            return recur(L.left,R.right) and recur(L.right,R.left)

        return not root or recur(root.left,root.right)
相关推荐
_童年的回忆_2 分钟前
【Linux】安装Jenkins并且打包发布springboot项目
linux·spring boot·jenkins
洛水水2 分钟前
【力扣100题】48.乘积最大子数组
算法·leetcode·职场和发展
小小de风呀2 分钟前
de风——【从零开始学C++】(七):string类详解
开发语言·c++·算法
YL200404262 分钟前
042将有序数组转换为二叉搜索树
数据结构·算法·leetcode
Yana.nice4 分钟前
rpm -K检查RPM软件包完整性
linux·服务器·网络
Data_Journal4 分钟前
Node.js网络爬取指南——简单易上手!
大数据·linux·服务器·前端·javascript
qq_296553277 分钟前
矩阵对角线遍历:从暴力到最优的优雅解法
数据结构·线性代数·算法·青少年编程·矩阵·深度优先遍历
洛水水7 分钟前
【力扣100题】50.最长有效括号
算法·leetcode·职场和发展
数智工坊8 分钟前
【BLIP论文阅读】:统一视觉语言理解与生成的自举式预训练范式
论文阅读·人工智能·深度学习·算法·transformer
yyy(十一月限定版)9 分钟前
问题解决策略搜索训练3
算法