剑指offer-对称的二叉树

2016/05/24 C和C++基础

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

判断前序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;
    }
};

Search

    Post Directory