题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
判断前序DFS和后序DFS对应位置是否相等即可
class Solution {
public:
bool isSymmetrical(TreeNode* pRoot)
{
return DFS(pRoot, pRoot);
}
bool DFS(TreeNode *p, TreeNode *q)
{
if(p == NULL && q != NULL) return false;
if(p != NULL && q == NULL) return false;
if(p == NULL && q == NULL) return true;
if(p->val != q->val) return false;
if(!DFS(p->left, q->right)) return false;
if(!DFS(p->right, q->left)) return false;
return true;
}
};