主要是检查该二叉树是否是自己的一个镜像(也就是以中心轴对称的)

 举例来说,下面显示的就是一个对称的二叉树

    1
/ \
2 2
/ \ / \
3 4 4 3 下面显示的就不是一个对称的二叉树了
    1
/ \
2 2
\ \
3 3 算法主要思想就是利用递归,左右子树同时遍历,若出现不一致的情况,则说明是不对称的
代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}else{
return isMirrorTree(root.left,root.right);
}
} public boolean isMirrorTree(TreeNode leftNode,TreeNode rightNode){
if(leftNode!=null && rightNode!=null){
if(leftNode.val == rightNode.val){
if(isMirrorTree(leftNode.left,rightNode.right) && isMirrorTree(leftNode.right,rightNode.left)){
return true;
}else{
return false;
}
}else{
return false;
}
}else if(leftNode == null && rightNode == null){
return true;
}else{
return false;
}
}
}

  

 
04-14 23:51