28剑指OFFER之对称的二叉树

关键词:

知道如何判断两颗树是不是对称的

自己的解法:
//判断二叉树是不是对称的
bool IsSymmetical(BinaryTreeNode* pRoot)
{

    //判断二叉树是不是对称的
    //通过判断两棵树是不是对称的
    //通过判断树1的左子树和树2的右子树是不是对称的以及通过判断树1的右子树和树2的左子树是不是对称的
    
    if (pRoot == nullptr)
        return true;
    return IsSymmetical(pRoot->m_pLeft,pRoot->m_pRight);
}

bool IsSymmetical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2)
{
    if (pRoot1 == nullptr && pRoot2 == nullptr)
        return true;
    else if (pRoot1 != nullptr && pRoot2 == nullptr)
        return false;
    else if (pRoot1 == nullptr && pRoot2 != nullptr)
        return false;
    else if (pRoot1->m_nKey == pRoot2->m_nKey)
    {
        bool bLeft = IsSymmetical(pRoot1->m_pLeft,pRoot2->m_pRight);
        bool bRight = IsSymmetical(pRoot1->m_pRight,pRoot2->m_pLeft);
        if (bLeft&&bRight)
            return true;
        else
            return false;
    }
    else
    {
        return false;
    }
}

你可能感兴趣的:(28剑指OFFER之对称的二叉树)