/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* @author Senky
* @date 2023.08.01
* @par url https://www.nowcoder.com/creation/manager/content/584337070?type=column&status=-1
* @param pRoot TreeNode类
* @return bool布尔型
*/
#include <stdbool.h>
// Helper function to check if two trees are mirrors
bool isMirror(struct TreeNode* leftTree, struct TreeNode* rightTree)
{
if (leftTree == NULL && rightTree == NULL)
{
//无孩子
return true;
}
if (leftTree == NULL || rightTree == NULL)
{
//只有一个孩子
return false;
}
return (leftTree->val == rightTree->val) && //left和right结点的值相等
isMirror(leftTree->left, rightTree->right) && //left左和right右比较
isMirror(leftTree->right, rightTree->left); //left右和right左比较
}
bool isSymmetrical(struct TreeNode* pRoot)
{
//根结点空为true
if (pRoot == NULL) {
return true;
}
return isMirror(pRoot->left, pRoot->right);
}