LeetCode-对称二叉树
Table of Contents
1 Easy-对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
2 自己的解答
2.1 思路
- 这题跟之前做过的一道题非常类似,同样可以利用递归法解决. 参考 LeetCode-相同的树
2.2 代码
package algorithm.easy; public class IsSymmetric { public boolean solution(TreeNode root) { if (root == null) { return true; } else { return subCompare(root.left, root.right); } } public boolean subCompare(TreeNode p, TreeNode q) { boolean lc = false; boolean rc = false; // 如果p和q均为空,镜像对称,true if (p == null && q == null) { return true; } else if (p != null && q != null) { // 如果p和q都不为空,比较值是否相同,相同,递归遍历 if (p.val == q.val) { // 比较p的左和q的右是否一致 lc = subCompare(p.left, q.right); // 比较q的左和p的右是否一致 rc = subCompare(p.right, q.left); } else { // 不同,不是镜像对称 return false; } } else { // 如果p和q其中一方为空,镜像不对称,false return false; } return lc && rc; } }