题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的
对称的二叉树,说明,左右子树要完全相同
确定递归出口:如果根节点为空的情况,返回true ,空树也是对称树
左右子树一个为空另一个不为空,返回false,不对称
递归处理
class Solution {
public:
bool isSymmetrical(TreeNode* pRoot)
{
if (pRoot == nullptr)
return true;
if (pRoot->left == nullptr&&pRoot->right == nullptr)
return true;
return isSymmetricalChild(pRoot->left, pRoot->right);
}
bool isSymmetricalChild(TreeNode* left, TreeNode* right)
{
if (left == nullptr&&right == nullptr)
return true;
if (left == nullptr || right == nullptr)
return false;
if (left->val == right->val)
return isSymmetricalChild(left->left, right->right) && isSymmetricalChild(left->right, right->left);
return false;
}
};