【LeetCode 101】对称二叉树

1. 题目

2. 分析

这道题比较经典。我又一次做错了,这次是花了20min都没有做出来。

最开始我的思想就是,递归比较左根节点的左子树和右根节点的右子树是否对称即可,然后觉得能解决问题了,便动手coding。哪知道,又碰到了如下的问题:(1)左根节点的右子树和右根节点的左子树也是需要判断对称的,我给遗漏了;(2)对于同时有多个条件需要判断的递归,该如何返回?

我反思了一下我做的不对的原因: (1)自己动脑思考的时候未能考虑全面,以为就是简单的递归题,哪知道越做越复杂了。

3. 代码

3.1 错误版

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        return self.dfs(root, root)

    def dfs(self, l, r):        
        # 第一种情况满
        if l.left and r.right:
            if l.left.val == r.right.val:
                return self.dfs(l.left, r.right)
            else:
                return False

        if l.right and r.left:
            if l.right.val == r.left.val:
                return self.dfs(l.right, r.left) 
            return False

        if l.left is None and r.right is None:
            return True
        if l.right is None and r.left is None:
            return True
        return False

最开始写代码的时候,我漏了下面这部分的代码:

这个代码还有第二个问题就是:返回逻辑过于复杂,怎么写了这么繁琐的返回值,说明代码的逻辑性不强。

3.2 正确版

相关推荐
Wect1 小时前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·typescript
Wect1 小时前
LeetCode 46. 全排列:深度解析+代码拆解
前端·算法·typescript
颜酱1 小时前
Dijkstra 算法:从 BFS 到带权最短路径
javascript·后端·算法
木心月转码ing4 小时前
Hot100-Day24-T128最长连续序列
算法
小肥柴4 小时前
A2UI:面向 Agent 的声明式 UI 协议(三):相关概念和技术架构
算法
学高数就犯困7 小时前
性能优化:LRU缓存(清晰易懂带图解)
算法
xlp666hub9 小时前
Leetcode第七题:用C++解决接雨水问题
c++·leetcode
CoovallyAIHub9 小时前
CVPR 2026 | MixerCSeg:仅2.05 GFLOPs刷新四大裂缝分割基准!解耦Mamba隐式注意力,CNN+Transformer+Mamba三
深度学习·算法·计算机视觉
CoovallyAIHub10 小时前
YOLO26-Pose 深度解读:端到端架构重新设计,姿态估计凭什么跨代领先?
深度学习·算法·计算机视觉
CoovallyAIHub10 小时前
化工厂气体泄漏怎么用AI检测?30张图3D重建气体泄漏场景——美国国家实验室NeRF新研究
深度学习·算法·计算机视觉