Symmetric Tree
问题描述:给定一个二叉树,检查它是否是镜像对称的。
问题解决:我的想法是这样的,分别用两个指针指向根节点,假设这两个指针为p和q,然后每一次比较p的左子树和q的右子树,p的右子树和q的左子树,这是递归的部分,边界条件则为叶子节点。
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(!root)
return true;
TreeNode *p=root,*q=root;
return isSame(p,q);
}
bool isSame(TreeNode *p,TreeNode *q)
{
if(!p&&!q) return true;
//不对称
else if(!p||!q) return false;
//如果节点的值相同,则往下递归
if(p->val==q->val)
return isSame(p->left,q->right)&&isSame(p->right,q->left);
else
return false;
}
};