题目描述:输入两棵二叉树A和B,判断B是不是A的子结构。
二叉树的定义如下:
struct BinaryTreeNode
{
int value;
BinaryTreeNode *left;
BinaryTreeNode *right;
};
遍历二叉树
bool HasSubTree(BinaryTreeNode *pRoot1, BinaryTreeNode *pRoot2)
{
bool result = false;
if(pRoot1 != NULL && pRoot2 != NULL)
{
if(pRoot1->value == pRoot2->value)
result=DoseTree1HaveTree2(pRoot1, pRoot2);
if(!result)
result=DoseTree1HaveTree2(pRoot1->left, pRoot2);
if(!result)
result=DoseTree1HaveTree2(pRoot1->right, pRoot2);
}
return result;
}
bool DoesTree1HaveTree2(BinaryTreeNode *pRoot1, BinaryTreeNode *pRoot2)
{
if(pRoot2==NULL)
return true;
if(pRoot1==NULL)
return false;
if(pRoot1->value != pRoot2->value)
return false;
return DoesTree1HaveTree2(pRoot1->left, pRoot2->left)&&DoesTree1HaveTree2(pRoot1->right, pRoot2->right);
}