解题思路如下:
若满足对称二叉树,必须满足:
- L->val == R->val
- L->left->val == R->right->val
- L->right->val == R->left->val
因此可以自顶向下,递归求解即可
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}*/
/*请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。*/
class Solution
{
public bool isSymmetrical(TreeNode pRoot)
{
if(pRoot==null) return true;
return isSame(pRoot.left,pRoot.right);
}
public bool isSame(TreeNode root1,TreeNode root2)
{
if(root1==null && root2==null)
{
return true;
}
if(root1==null || root2==null)
{
return false;
}
return (root1.val==root2.val) && isSame(root1.left, root2.right) && isSame(root1.right,root2.left);
}
}