判断二叉树B是否是二叉树A的子结构
bool HasSubTree(BinaryTreeNode *root1,BinaryTreeNode *root2)
{
bool result = false;
if(root1!=NULL&&root2!=NULL)
{
if(root1->value == root2->value)
result = DoesTree1HaveTree2(root1,root2);
if(!result)
result = HasSubTree(root1->left,root2);
if(!result)
result = HasSubTree(root1->right,root2);
}
return result;
}
bool DoesTree1HaveTree2(BinaryTreeNode * root1,BinaryTreeNode *root2)
{
if(root2 == NULL)
return true;
if(root1 == NULL)
return false;
if(root1->data!=root2->data)
return false;
return (DoesTree1HaveTree2(root1->left,root2)&&DoesTree1HaveTree2(root1->right,root2));
}
以上函数采用了递归的思想来进行判断