题目
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1 2 3 4 5
| 1 / \ 2 2 / \ / \ 3 4 4 3
|
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
说明:
如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
思路
二叉树的一个典型套路就是递归求解。左右树分别对待。
注意递归截止条件以及是否对称的判断条件。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return tryTree(root.left, root.right); } public boolean tryTree(TreeNode left, TreeNode right){ if(right==null&&left==null) return true; if(left==null||right==null) return false; if(left.val==right.val) return tryTree(left.left, right.right)&&tryTree(left.right, right.left); return false; } }
|