Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
求二叉树L1是否为对称树,以root为切分化为左右两两棵子树,先检查左右两棵子树是否有相同结构和数值,递归检查其相应左右子树,(一棵树的左子树与另一棵树的右子树相对应),遇到不同返回false,最后返回true.
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean sameTree(TreeNode l1,TreeNode l2)
{
if(l1==null && l2==null)return true;
else if((l1==null && l2!=null)||(l2==null && l1!=null) ||(l1.val!=l2.val) )return false;
else return sameTree(l1.left,l2.right) && sameTree(l1.right,l2.left);
}
public boolean isSymmetric(TreeNode root) {
if(root==null)return true;
return sameTree(root.left,root.right);
}
}