题目:
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
题解:
递归遍历左右节点即可。
注意特殊情况的处理,root为空时,也为对称二叉树,返回true。
代码实现
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int x) { val = x; }
}
public class Solution {
public bool IsSymmetric(TreeNode root)
{
if(root != null)
{
return IsSamil(root.left,root.right);
}
return true;
}
private bool IsSamil(TreeNode left,TreeNode right)
{
if(left == null && right == null)
{
return true;
}
if(left == null || right == null || left.val != right.val)
{
return false;
}
return IsSamil(left.left,right.right)
&& IsSamil(left.right,right.left);
}
}