思路:递归思想
(1)首先,题目中函数只有一个参数,我们无法做出题目,需要找一个助手
(2)一直都是root1的左子树与root2的右子树,root1的右子树与root2的左子树进行比较
------------------------------------递归--------------------------------
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null) return true;
return isSymmetricHelper(root.left,root.right);
}
public boolean isSymmeticHelper(TreeNode root1,TreeNode root2){
if(root1==null&&root2==null) return true;
if(root1==null||root2==null) return false;
return (root1.val==root2.val)&&isSymmeticHelper(root1.left,root2.right)
&&isSymmeticHelper(root1.right,root2.left;)
}
}
------------------------------------迭代--------------------------------
public boolean isSymmetric(TreeNode root) {
if(root == null)
return true;
Queue<TreeNode> q = new LinkedList();
q.add(root.left);
q.add(root.right);
while(!q.isEmpty()){
TreeNode left = q.poll();
TreeNode right = q.poll();
if(left == null && right == null)
continue;
if(left == null || right == null ||left.val != right.val )
return false;
q.add(left.left);
q.add(right.right);
q.add(left.right);
q.add(right.left);
}
return true;
}