力扣题----判断二叉树是否为镜像对称的。
思路:p指向root的左孩子,q指向root的右孩子。判断p和q的值是否相等,相等则递归判断p的左孩子和q的右孩子是否相等,p的右孩子和q的左孩子是否相等,相等则继续递归下去。当p和q都为空时,说明整个二叉树都已经遍历完毕且遍历过程中p和q的值一直相等,则返回true。
给定二叉树的结构如下:
struct TreeNode
{
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool fun(struct TreeNode* p,struct TreeNode* q)
{
if(NULL==p&&NULL==q) return true;
if(NULL==p||NULL==q) return false;
if(p->val!=q->val) return false;
bool L=fun(p->left,q->right);
bool R=fun(p->right,q->left);
return L&&R;
}
bool isSymmetric(struct TreeNode* root)
{
if(NULL==root) return true;
struct TreeNode *p=root->left;
struct TreeNode *q=root->right;
return fun(p,q);
}