给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
说明:
如果你可以运用递归和迭代两种方法解决这个问题,会很加分
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree
1 public class SymmetricTree { 2 static class TreeNode { 3 int val; 4 TreeNode left; 5 TreeNode right; 6 TreeNode(int x) { 7 val = x; 8 } 9 } 10 11 public boolean isSymmetric(TreeNode root) { 12 if(root == null) { 13 return true; 14 } 15 return isSameTree(root.left, root.right); 16 } 17 18 public static boolean isSameTree(TreeNode root1, TreeNode root2) { 19 if(root1 == null && root2 == null) { 20 return true; 21 } 22 if(root1 == null || root2 == null) { 23 return false; 24 } 25 if(root1.val != root2.val) { 26 return false; 27 } 28 return isSameTree(root1.left, root2.right) && isSameTree(root1.right, root2.left); 29 } 30 }