题解 | #牛群的轴对称结构# java

牛群的轴对称结构

https://www.nowcoder.com/practice/a200535760fb4da3a4568c03c1563689

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return bool布尔型
     */
    public boolean isSymmetric (TreeNode root) {
        // write code here
        if (root == null) {
            return true;
        }
        return isMirror(root.left, root.right);
    }

    public boolean isMirror(TreeNode node1, TreeNode node2) {
        if (node1 == null && node2 == null) {
            return true;
        }
        if (node1 == null || node2 == null) {
            return false;
        }

        return node1.val == node2.val && isMirror(node1.left, node2.right) &&
               isMirror(node1.right, node2.left);
    }
}

这道题目考察的是判断二叉树是否镜像对称,以及递归的思想。

以下是代码解释的大纲:

  1. 创建一个类Solution,包含一个方法isSymmetric,用于判断二叉树是否镜像对称。
  2. isSymmetric方法接收一个参数root,表示二叉树的根节点。返回一个布尔值,表示二叉树是否镜像对称。
  3. 在isSymmetric方法中,首先判断根节点是否为空,如果为空,则直接返回true。
  4. 调用递归函数isMirror,传入根节点的左子树和右子树,并返回结果。
  5. 定义递归函数isMirror,用于判断两棵树是否镜像对称。该函数接收两个参数node1和node2,分别表示两棵树的当前节点。
  6. 在isMirror函数中,首先判断当前节点是否都为空,如果是,则返回true。
  7. 如果其中一个节点为空,或者两个节点的值不相等,则返回false。
  8. 递归调用isMirror函数,分别传入node1的左子树和node2的右子树,并传入node1的右子树和node2的左子树。只有两次递归都返回true,才说明两棵子树镜像对称。
  9. 返回两次递归的结果的逻辑与运算。

通过这道题目的解答,可以巩固二叉树的遍历和递归思想,并学会判断二叉树是否镜像对称。

全部评论

相关推荐

11-28 16:00
已编辑
武汉理工大学 Java
想干测开的tomca...:这份简历是“短期项目硬堆中大型系统技术”的“技术炫技式造假模板”,槽点密集到能当反面教材: ### 1. 「项目时长」和「技术密度」严重脱节,造假痕迹焊死在简历上 两个项目时长分别是**3个月、2个月**,但堆了Spring AI、Elasticsearch、MinIO、Kafka、ShardingSphere、Docker、Sentinel等近20个中大型项目才用的技术——正常情况下,光把这些中间件的文档看完+环境搭好,3个月都不够,更别说实现“AI多轮对话、分库分表、RBAC权限、大模型调用”这些功能。 说白了:你这不是“做项目”,是把“后端技术栈清单”往项目里硬塞,明摆着“只调用了API,没碰过核心逻辑”。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务