Title

力扣-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));
    }
}
posted @   唔芜舞雾  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示