力扣hot100 - 101、对称二叉树

题目:

思路:判断是不是对称二叉树,本质上是判断根节点左右子树是否可以相互翻转。整体思路:比较左右子树的外边及里边,如果都相等就是对称二叉树。确定遍历顺序:这类题最好用后续遍历左右中,把左右孩子的信息处理完返回给上一层。递归前先判断一些一定是对称或一定是不对称的情况,左右都空、左空右不空、左不空右空、左右值不相等;注意把左右空放前面避免控制针;我们真正要递归处理的情况是左右不空且值相等,这是要判断左右子树外侧及内侧是否相同。

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
       return a(root.left,root.right);
    }

    boolean a(TreeNode l , TreeNode r){
        if(l == null && r == null){
            return true;
        }else if(l == null && r != null){
            return false;
        }else if(l != null && r == null){
            return false;
        }else if(l.val != r.val){
            return false;
        }else{
            boolean outside = a(l.left,r.right);
            boolean inside = a(l.right,r.left);
            return outside && inside;
        }
    }
}
相关推荐
Dlrb12115 小时前
C语言-指针三
c语言·算法·指针·const·命令行参数
Tisfy5 小时前
LeetCode 2540.最小公共值:双指针(O(m+n))
算法·leetcode·题解·双指针
IronMurphy5 小时前
【算法四十七】152. 乘积最大子数组
算法
淘矿人6 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
Cosolar6 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
小江的记录本7 小时前
【Java基础】泛型:泛型擦除、通配符、上下界限定(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·mysql·spring·面试·职场和发展
落羽的落羽8 小时前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
萑澈9 小时前
算法竞赛入门:C++ STL核心用法与时空复杂度速查手册
数据结构·c++·算法·stl
Godspeed Zhao9 小时前
从零开始学AI16——SVM
算法·机器学习·支持向量机