树的子结构

原创 2015年07月08日 19:43:41




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



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




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指offer 树的子结构

树的子结构题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 我的解答题意这道题目我是在牛客网上做的,题目叙述过于简答,坑了我半天,我的理解是一棵...

剑指offer-面试题18.树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。 二叉树节点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValu...