二叉树--对称二叉树

本文探讨了如何通过递归方法判断一棵二叉树是否是对称的,关键在于对左右子树的比较,并处理边界情况。通过实例代码展示了如何在TreeNode类中实现对称性检查,以及Solution类中的isSymmetrical和isSymmetricals方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)

思路:
对左右子树进行判断,左子树的右子树是否等于右子树的阿左子树
递归要注意边界判断
1、如果左子树位空就要判断右子树是否为空,为空就返回ture,不为空就不是对称二叉树
2、如果通过第一层判断,那么只要右子树为空就一定不是对称二叉树
3、如果左右子树的值相等,就分别对左子树的右子树和右子树的左子树,以及左子树的左子树和右子树的右子树进行判断

public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
        
        if (pRoot==null||(pRoot.left==null&&pRoot.right==null)){
            return true;
        }
        if ((pRoot.right==null&&pRoot.left!=null)||(pRoot.right!=null&&pRoot.left==null)){
            return false;
        }
        TreeNode a=pRoot.left;
        TreeNode b=pRoot.right;
        boolean oj=isSymmetricals(a,b);
        return oj;
    }
     private static boolean isSymmetricals(TreeNode a, TreeNode b) {
       if (a==null){
            return b==null;
        }
        if (b==null){
            return false;
        }
        if (a.val==b.val){
            boolean h2=isSymmetricals(a.right,b.left)&&isSymmetricals(a.left,b.right);
            return h2;
        }else{
            return false;
        }
    }
}
### 数据结构中的对称二叉树 #### 定义 对称二叉树是指一棵二叉树与其自身的镜像是相同的。换句话说,对于任意节点而言,其左子树和右子树互为镜像关系。具体来说,如果一个二叉树对称的,则它的每一层上的节点分布关于中心轴呈对称排列。 为了验证一颗二叉树是否是对称的,可以采用递归方法来比较该树的左右子树是否具有镜像特性[^1]。 --- #### 对称性的实现 以下是基于 JavaScript 的一种实现方式: ```javascript function isSymmetrical(pRoot) { return isSymmetricalTree(pRoot, pRoot); } function isSymmetricalTree(node1, node2) { // 如果两棵树都为树,对称 if (!node1 && !node2) { return true; } // 一棵为,另一棵不为,不对称 if (!node1 || !node2) { return false; } // 如果当前节点值不同,不对称 if (node1.val !== node2.val) { return false; } // 继续递归断左子树与右子树的关系 return isSymmetricalTree(node1.left, node2.right) && isSymmetricalTree(node1.right, node2.left); } ``` 此代码的核心在于通过递归来逐级对比每一对对应的节点,从而确认整棵树是否满足对称条件[^3]。 --- #### 性质分析 在讨论对称二叉树时,需注意以下几个重要性质: 1. **树**:任何树都被认为是对称的。 2. **单节点树**:仅有一个根节点而无子节点的树也是对称的。 3. **完全对称性**:只有当所有对应位置上的节点均存在且数值一致时,才可定整个树为对称状态[^2]。 --- #### 应用场景 对称二叉树的概念不仅限于理论研究,在实际应用中有广泛用途,比如图形渲染、模式匹配等领域可能涉及此类数据结构的操作。此外,在面试过程中也常被用来考察候选人对递归算法的理解程度以及解决问题的能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值