剑指Offer18树的子结构

来源:互联网 发布:java gbk转utf8 乱码 编辑:程序博客网 时间:2024/06/08 12:49

题目:

输入两颗二叉树A和B,判断B是不是A的子结构。

分析:

这个题没有难度,就是通过递归来一步步判断。

下面是代码:

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);}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;}


0 0
原创粉丝点击