Symmetric Tree
2015-04-11 10:49 笨笨的老兔子 阅读(130) 评论(0) 编辑 收藏 举报判断一棵树是否对称
思路:用递归的方法判断即可。有一个小tips,判断两个节点是否全为空或者全不为空是可以用异或,少写一些代码
class Solution {
public:
bool isSymmetric(TreeNode *root) {
if (!root)
return true;
return sym(root->left, root->right);
}
bool sym(TreeNode* p, TreeNode* q)
{
if (!p && !q)
return true;
if (((p==NULL) ^ (q==NULL)) || (p->val != q->val)||(!p->left && q->right) || (!p->right && q->left))
return false;
return sym(p->left, q->right) && sym(p->right, q->left);
}
};