代码改变世界

Symmetric Tree

2015-04-11 10:49  笨笨的老兔子  阅读(130)  评论(0编辑  收藏  举报

判断一棵树是否对称

思路:用递归的方法判断即可。有一个小tips,判断两个节点是否全为空或者全不为空是可以用异或,少写一些代码

  1. class Solution {
  2. public:
  3. bool isSymmetric(TreeNode *root) {
  4. if (!root)
  5. return true;
  6. return sym(root->left, root->right);
  7. }
  8. bool sym(TreeNode* p, TreeNode* q)
  9. {
  10. if (!p && !q)
  11. return true;
  12. if (((p==NULL) ^ (q==NULL)) || (p->val != q->val)||(!p->left && q->right) || (!p->right && q->left))
  13. return false;
  14. return sym(p->left, q->right) && sym(p->right, q->left);
  15. }
  16. };