剑指offer——面试题18:树的子结构

来源:互联网 发布:ubuntu和linux 编辑:程序博客网 时间:2024/06/05 16:50

bool HasSubtree(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2){    bool result = false;    if(pRoot1 != NULL && pRoot2 != NULL)    {        if(pRoot1->m_nValue == pRoot2->m_nValue)            result = DoesTree1HaveTree2(pRoot1, pRoot2);        if(!result)            result = HasSubtree(pRoot1->m_pLeft, pRoot2);        if(!result)            result = HasSubtree(pRoot1->m_pRight, pRoot2);    }    return result;}

bool DoesTree1HaveTree2(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2){    if(pRoot2 == NULL)        return true;    if(pRoot1 == NULL)        return false;    if(pRoot1->m_nValue != pRoot2->m_nValue)        return false;    return DoesTree1HaveTree2(pRoot1->m_pLeft, pRoot2->m_pLeft) &&        DoesTree1HaveTree2(pRoot1->m_pRight, pRoot2->m_pRight);}

0 0