bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
 {
     if (pRoot2 == NULL || pRoot1 == NULL)
         return false;
     //判断子树是否相同,并且是否为本树的子树
     return IsSubtree(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
 }
コード例 #2
0
// TODO: TEST CASE
bool HasSubtree(BinaryTreeNode * pRoot1, BinaryTreeNode * pRoot2)
{
    bool result = false;

    if(pRoot1 && pRoot2)
    {
        if(pRoot1->m_nValue == pRoot2->m_nValue)
            result = DoesTree1HaveTree2(pRoot1, pRoot2);
        if(!result)
            result = HasSubtree(pRoot1->m_pLeft, pRoot2);
        if(!result)
            result = HasSubtree(pRoot2->m_pRight, pRoot2);
    }
    return result;
}
コード例 #3
0
ファイル: main.cpp プロジェクト: iKingsly/iKYLeetCode
bool HasSubtree(BinaryTreeNode *pRoot1, BinaryTreeNode *pRoot2){
    bool result = false;
    if (pRoot1 != NULL && pRoot2 == NULL) {
        if (pRoot1->m_value == pRoot2->m_value) {
            result = DoesTree1HaveTree2(pRoot1,pRoot2);
        }
        if (!result) {
            result = HasSubtree(pRoot1->m_pLeft, pRoot2);
        }
        if (!result) {
            result = HasSubtree(pRoot2->m_pRight, pRoot2);
        }
    }
    return result;
}
コード例 #4
0
// ==================== Test Code ====================
void Test(char* testName, BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2, bool expected)
{
    if(HasSubtree(pRoot1, pRoot2) == expected)
        printf("%s passed.\n", testName);
    else
        printf("%s failed.\n", testName);
}
コード例 #5
0
ファイル: 17_HasSubtree.cpp プロジェクト: autyinjing/OJ
 bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
 {
     if (pRoot1 == NULL || pRoot2 == NULL)
         return false;
     return isSubTree(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
 }