题目:
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是 [1,2,2,null,3,null,3] 则不是镜像对称的
代码:
public class Solution {
public bool IsSymmetric(TreeNode root)
{
if(root == null)
{
return true;
}
TreeNode left = root.left;
TreeNode right = root.right;
return IsMirror(left,right);
}
public bool IsMirror(TreeNode node1,TreeNode node2)
{
if(node1 == null && node2 == null)
return true;
if(node1 == null || node2 == null)
return false;
if(node1.val == node2.val)
{
return IsMirror(node1.left,node2.right) && IsMirror(node1.right,node2.left);
}
else
{
return false;
}
}
}
解析:
对称二叉树即每一层节点都是中心对称的,先判断若“树顶”为空,即返回ture;然后逐步遍历每一层的左子树与右子树,看每一个节点是否相同。