力扣-101. 对称二叉树
题目大意
给定一颗二叉树,判断是否对称
解题思路
将其中一个子树镜像翻转,再判断左右子树相不相等即可。镜像翻转示意图如下:
code
复制/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null)
return true;
TreeNode leftTree = mirrorTree(root.left); # 将左子树翻转
return isEqualTo(leftTree,root.right); # 判断子树是否相等
}
public TreeNode mirrorTree(TreeNode root) {
if(root==null){
return root;
}
if(root.left==null&&root.right==null){# 当前节点为叶子节点时,返回
return root;
}
TreeNode pre = root.left;# 保存左子树
root.left = mirrorTree(root.right); #令左子树等于翻转后的右子树
root.right = mirrorTree(pre); # 令右子树等于翻转后的左子树
return root;
}
public boolean isEqualTo(TreeNode left, TreeNode right){
if(left==null&&right==null) # 当其父节点为叶子节点时,返回true
return true;
if(left==null || right== null) #当某一子树为空时,返回false
return false;
if(left.val!=right.val)
return false;
return (isEqualTo(left.left,right.left) && isEqualTo(left.right,right.right));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异