本文主要是介绍Leetcode JAVA刷刷站(101)对称二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目概述
二、思路方向
在Java中,要检查一个二叉树是否是轴对称的(也称为镜像对称的),你可以通过递归地比较树的左子树和右子树是否镜像对称来实现。轴对称的二叉树意味着树的左子树和右子树关于根节点对称,即左子树的每个节点都与右子树中相应位置的节点镜像对称。
三、代码实现
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }
} public class Solution { public boolean isSymmetric(TreeNode root) { // 如果根节点为空,则认为是对称的(空树是对称的) if (root == null) { return true; } // 调用辅助函数来比较左右子树 return isMirror(root.left, root.right); } // 辅助函数,用于递归地比较两个树是否镜像对称 private boolean isMirror(TreeNode t1, TreeNode t2) { // 如果两个节点都为空,则它们是对称的 if (t1 == null && t2 == null) { return true; } // 如果只有一个节点为空,或者节点的值不相等,则它们不是对称的 if (t1 == null || t2 == null || t1.val != t2.val) { return false; } // 递归地比较左子树的左子树和右子树的右子树,以及左子树的右子树和右子树的左子树 return isMirror(t1.left, t2.right) && isMirror(t1.right, t2.left); } public static void main(String[] args) { // 示例用法 // 构建一个简单的轴对称二叉树进行测试 TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(2); root.left.left = new TreeNode(3); root.right.right = new TreeNode(3); Solution solution = new Solution(); boolean isSymmetric = solution.isSymmetric(root); System.out.println("Is symmetric? " + isSymmetric); // 应输出 true }
}
执行结果:
四、小结
在上面的代码中,
isSymmetric
方法首先检查根节点是否为空(空树是对称的)。然后,它调用辅助函数isMirror
来递归地比较左子树和右子树是否镜像对称。isMirror
函数首先检查两个节点是否都为空(这是递归的基本情况),然后检查它们是否都非空且值相等。最后,它递归地比较左子树的左子树与右子树的右子树,以及左子树的右子树与右子树的左子树,从而确定两棵树是否镜像对称。
结语
你相信你行,你就活力无穷
你认为你自已不行,就会精神萎靡
!!!
这篇关于Leetcode JAVA刷刷站(101)对称二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!