尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

LeetCode 101. 对称二叉树|Python 解法详解

LeetCode 101. 对称二叉树|Python 解法详解 LeetCode 101. 对称二叉树Python 解法详解CSDN 算法专题 · 二叉树 | 难度简单题目信息题号101难度简单LeetCode题目链接题目描述判断一棵二叉树是否关于中心轴镜像对称。示例输入root [1,2,2,3,4,4,3] 输出true约束节点数不超过 1000。解题思路核心观察对称不是比较两棵子树相同位置而是比较镜像位置左树的左节点对应右树的右节点左树的右节点对应右树的左节点。递归同时检查值与两组镜像子树。推导与执行步骤空树直接对称定义比较两个镜像节点的函数处理同时为空或仅一个为空比较值并交叉递归子节点为什么这个方法正确算法始终围绕上述核心观察维护有效状态并且每一步只排除已经能够证明不可能产生更优答案的情况。按照执行步骤处理后所有可能影响答案的元素或节点都会被恰好检查因此不会遗漏合法答案状态更新又严格遵守题目约束所以最终结果有效。从边界看空区间、单个元素、全部相同或完全不匹配等情况都会落入初始化条件或循环终止条件不需要依赖未定义状态。实现时再重点检查下标、空节点和重复元素即可保证算法在极端输入下仍然成立。Python 代码# 解法核心对称不是比较两棵子树相同位置而是比较镜像位置左树的左节点对应右树的右节点左树的右节点对应右树的左节点。递归同时检查值与两组镜像子树。# 实现步骤# 1. 空树直接对称# 2. 定义比较两个镜像节点的函数# 3. 处理同时为空或仅一个为空# 4. 比较值并交叉递归子节点fromtypingimportOptionalclassTreeNode:def__init__(self,val0,leftNone,rightNone):self.valval self.leftleft self.rightrightclassSolution:defisSymmetric(self,root:Optional[TreeNode])-bool:ifnotroot:returnTruedefis_mirror(t1:Optional[TreeNode],t2:Optional[TreeNode])-bool:ifnott1and(nott2):returnTrueifnott1ornott2:returnFalsereturnt1.valt2.valandis_mirror(t1.left,t2.right)andis_mirror(t1.right,t2.left)returnis_mirror(root.left,root.right)复杂度分析时间复杂度O(n)空间复杂度O(h)易错点递归参数应交叉配对而不是 left-left、right-right。总结这道题的关键是对称不是比较两棵子树相同位置而是比较镜像位置左树的左节点对应右树的右节点左树的右节点对应右树的左节点。理解这一点后再结合边界条件检查代码就能保持清晰且稳定。
返回列表