正规的徐州网站开发,域名论坛网站,做网站这么做,wordpress 不显示主题写在前面 最近想复习一下数据结构与算法相关的内容#xff0c;找一些题来做一做。如有更好思路#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 对称二叉树。给给定一个二叉树#xff0c;检查它是否是镜像对称的。
例…写在前面 最近想复习一下数据结构与算法相关的内容找一些题来做一做。如有更好思路欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 对称二叉树。给给定一个二叉树检查它是否是镜像对称的。
例如二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \
3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2 2\ \3 3二、具体步骤
1.环境说明
名称说明IntelliJ IDEA2019.2
2.代码
以下为Java版本实现
public class Lc101_IsSymmetric {public static void main(String[] args) {TreeNode nodeFour new TreeNode(4);TreeNode nodeThree new TreeNode(3);TreeNode nodeTwo new TreeNode(2);nodeTwo.left nodeFour;nodeTwo.right nodeThree;TreeNode node4 new TreeNode(4);TreeNode node3 new TreeNode(3);TreeNode node2 new TreeNode(2);node2.left node3;node2.right node4;TreeNode root new TreeNode(1);root.left node2;root.right nodeTwo;System.out.println(isSymmetric(root));}/*** 思路递归* 返回值是boolean** 将当前结点的left和right分别当作2个二叉树进行递归比较2边的结点是否对称思路和一个二叉树是否是另一个二叉树的子树类似* 2个结点的比较** 判断是否镜像比较左子树的左节点和右子树的右节点是否相同** param root* return*/private static boolean isSymmetric(TreeNode root) {if (root null) {return false;}return isSymmetric(root.left, root.right);}/*** 比较2棵子树是否对称** param t1* param t2* return*/private static boolean isSymmetric(TreeNode t1, TreeNode t2) {// 循环结束条件if (t1 null t2 null) {return true;}if (t1 null || t2 null || t1.val ! t2.val) {return false;}return isSymmetric(t1.left, t2.right) isSymmetric(t1.right, t2.left);}static class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;}}
} 写在后面 如果本文内容对您有价值或者有启发的话欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。