判断二叉树是否对称

其实和判断是否相同是一样的:

bool isSymmetric(TreeNode* root) {
    if (root == nullptr) {
        return true;
    }
    
    function<bool(TreeNode*&, TreeNode*&)> check;
    check = [&](TreeNode*& p, TreeNode*& q)
    {
        if (p == nullptr && q == nullptr){
            return true;
        }
        else if (p == nullptr || q == nullptr){
            return false;
        }
        else if (p->val != q->val){
            return false;
        }
        else{
            return (check(p->left, q->right) && check(p->right, q->left));
        }
    };
    
    return check(root->left, root->right);
}

 

posted @ 2015-08-12 16:00  wu_overflow  阅读(210)  评论(0编辑  收藏  举报