leetcode 101. 对称二叉树

该博客讨论了一个关于二叉树的问题,即检查给定的二叉树是否轴对称。作者提供了使用深度优先搜索(DFS)的解题思路和Java代码实现。通过递归比较左右子节点的对应关系来确定树的对称性。递归终止条件包括左右子节点都为null、只有一个为空或两者值不相等。如果所有递归路径都满足对称条件,则树是对称的。
摘要由CSDN通过智能技术生成

难度:简单
频次:53

题目:

给你一个二叉树的根节点 root , 检查它是否轴对称。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路:DFS递归

注意:
  • 这里root不允许为空,树节点为1,1000之间
  • 这里的DFS是返回boolean值,返回为boolean值的递归都是在return上面做的
  • 而且每个DFS里都需要做两个递归
    • 左节点的左节点和右节点的右节点----对称节点
    • 左节点的右节点和右节点的左节点----对称节点
  • 递归的结束条件有3个
    • 左右节点都为null,对称
    • 左右节点有1个为null,不对称
    • 左右节点存在且不相等 不对称
    • 其实还有一种情况:左右节点存在且相等,但是这种要继续递归。

代码

/**
 * 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) {
        //题目说了 root不为空
        return DFS(root.left,root.right);  
    }
    public boolean DFS(TreeNode left,TreeNode right){
        //递归结束条件有3个
        //第一个条件  左右子节点都为null,对称
        if(left==null&&right==null) return true;
        //第二个条件  当左右子节点只有一个为空的时候,就不对称了 
        if(left==null||right==null) return false;
        //第三个条件  当左右子节点都存在,并且值不相等的时候,就不对称了
        if(left.val!=right.val) return false;    
        //继续递归左节点的左节点和右节点的右节点
        //左节点的右节点和右节点的左节点
        return DFS(left.right,right.left)&&DFS(left.left,right.right);
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值