题目
给定一个二叉树,检查它是否是镜像对称的
示例:
代码
***把树从根节点分成两棵,左边树的左,右节点分别与右边树的右,左节点对称相等***
public class solution
{
public bool IsSymmetric(TreeNode root)
{
if (root == null)
return true;
if (root.left == null && root.right == null)
return true;
if (root.left != null && root.right == null)
return false;
if (root.left == null && root.right != null)
return false;
if (root.left.val != root.right.val)
return false;
else
return IsSameTree(root.left, root.right);
}
public bool IsSameTree(TreeNode p, TreeNode q)
{
if (p == null && q == null)
return true;
if (p != null && q == null)
return false;
if (p == null && q != null)
return false;
if (p.val != q.val)
return false;
else
return IsSameTree(p.left, q.right)&&
IsSameTree(p.right, q.left);
}
}