题解 | #牛群的轴对称结构# 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);
}
}
这道题目考察的是判断二叉树是否镜像对称,以及递归的思想。
以下是代码解释的大纲:
- 创建一个类Solution,包含一个方法isSymmetric,用于判断二叉树是否镜像对称。
- isSymmetric方法接收一个参数root,表示二叉树的根节点。返回一个布尔值,表示二叉树是否镜像对称。
- 在isSymmetric方法中,首先判断根节点是否为空,如果为空,则直接返回true。
- 调用递归函数isMirror,传入根节点的左子树和右子树,并返回结果。
- 定义递归函数isMirror,用于判断两棵树是否镜像对称。该函数接收两个参数node1和node2,分别表示两棵树的当前节点。
- 在isMirror函数中,首先判断当前节点是否都为空,如果是,则返回true。
- 如果其中一个节点为空,或者两个节点的值不相等,则返回false。
- 递归调用isMirror函数,分别传入node1的左子树和node2的右子树,并传入node1的右子树和node2的左子树。只有两次递归都返回true,才说明两棵子树镜像对称。
- 返回两次递归的结果的逻辑与运算。
通过这道题目的解答,可以巩固二叉树的遍历和递归思想,并学会判断二叉树是否镜像对称。

查看3道真题和解析