力扣:101. 对称二叉树

文章讲述了如何使用Java编写一个名为`Solution`的类,通过递归方法`isSymmetric`判断给定二叉树是否对称,通过`duicheng`辅助函数进行节点值比较和子树结构的对称性检查。
摘要由CSDN通过智能技术生成

递归解题:

1.先判断这个树的形状是否是对称的,再判断只有一个根节点的情况,同时我们还要判断对称的节点中的值也要一样。

2. 比较左子树最左边和右子树的最右边的值是否都一样,再比较左子树最右边和右子树的最左边的值是否都一样。

/**
 * 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 duicheng(root.left, root.right);
    }
    public boolean duicheng(TreeNode le, TreeNode ri) {
        //看树的形状是否是对称的
        if ((le==null&&ri!= null) ||(le!=null&&ri== null)) {
           return false;
        }
        //没有左右子树的情况
     if (le==null&&ri== null) {
             return true;
        }
        //比较值是否相等
          if (le.val!=ri.val) {
            return false;
        }
           // 比较左子树最左边和右子树的最右边
           boolean i = duicheng(le.left,ri.right);
        // 比较左子树最右边和右子树的最左边
           boolean j = duicheng(le.right,ri.left);
         return i && j;
    } 
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值