题目内容
给定一个二叉树,检查它是否是镜像对称的。请用递归和迭代两种方法解决这个问题。
示例
示例一
二叉树 [1,2,2,3,4,4,3] 是对称的。

示例二
 [1,2,2,null,3,null,3] 则不是镜像对称的。

题解
本题的思路很简单,就是对树进行遍历求解。只需要注意:在遍历的过程中,要对称遍历,即在遍历左子树的左儿子时对应地要遍历右子树的右儿子即可。
代码
| 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 class Solution {
 public boolean isSymmetric(TreeNode root) {
 if(root==null) return true;
 return dfs(root.left,root.right);
 }
 
 public boolean dfs(TreeNode p,TreeNode q){
 if(p == null && q == null) return true;
 if(p==null || q== null || p.val != q.val) return false;
 return dfs(p.left,q.right) && dfs(p.right,q.left);
 }
 }
 
 class Solution {
 public boolean isSymmetric(TreeNode root) {
 if(root==null || (root.left==null && root.right==null)) {
 return true;
 }
 
 LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
 
 queue.add(root.left);
 queue.add(root.right);
 while(queue.size()>0) {
 
 TreeNode left = queue.removeFirst();
 TreeNode right = queue.removeFirst();
 
 if(left==null && right==null) {
 continue;
 }
 if(left==null || right==null) {
 return false;
 }
 if(left.val!=right.val) {
 return false;
 }
 
 queue.add(left.left);
 queue.add(right.right);
 
 queue.add(left.right);
 queue.add(right.left);
 }
 
 return true;
 }
 }
 
 |